当前位置:  编程技术>c/c++/嵌入式
本页文章导读:
    ▪【C开发】预编译处理命令(#define、typedef、#include、#运算符)      1、#define宏定义,在编译前由预处理器对代码作字符串的替换。宏定义不是语句,后面不加“;”。2、typedeftypedef是在编译时处理的,在自己的作用域内给一个已经存在的类型一个别名,t.........
    ▪c++输入输出流迭代器的理解      一、功能:用于从输入输出流中读取数据二、输入流迭代器:1.定义方法istream_iterator<要从流中读取的数据类型> 迭代器名(绑定的流);//创建的时候,就会调用标准输入istream_iterator<要从.........
    ▪字符统计算法(改进版)             前面那篇关于字符统计的算法只能找出出现次数最多的一个字符,对于“aaabbb”这些有2个或以上的出现次数最多的情况无法全部找出来,于是做了一下改进,解决了.........

[1]【C开发】预编译处理命令(#define、typedef、#include、#运算符)
    来源:    发布时间: 2013-10-17

1、#define

宏定义,在编译前由预处理器对代码作字符串的替换。宏定义不是语句,后面不加“;”。

2、typedef

typedef是在编译时处理的,在自己的作用域内给一个已经存在的类型一个别名,typedef不可以在函数中定义

3、例: typedef int * int_ptr;  与  #define int_ptr int * 

作用都是用int_ptr代表 int * ,但是二者不同,正如前面所说 ,#define在预处理 时进行简单的替换,而typedef不是简单替换 ,而是采用如同定义变量的方法那样来声明一种类型。

即相当于:

#define int_ptr int *
int_ptr a, b; //相当于int *a, b; 只是简单的宏替换

typedef int* int_ptr;
int_ptr a, b; //a, b 都为指向int的指针, typedef为int* 引入了一个新的助记符

4、#include “ ”与< >之间的区别

“ ”  :是从用户当前目录寻找包含文件,若找不到就会到库函数所在目录中寻找,再找不到就报错。

< >:是直接在库函数所在目录中寻找,找不到就报错。

5、#运算符

可以用来连接字符串。例:

#include<stdio.h>

#define PR(n) printf(#n"=%d\n", n)

int main()
{
int a=3, b=4, c=5;
PR(a);
PR(b);
PR(c);
return 0;
}

运算结果:

a=3

b=4

c=5

 

 

 

 

 

本文链接


    
[2]c++输入输出流迭代器的理解
    来源:    发布时间: 2013-10-17

一、功能:用于从输入输出流中读取数据

二、输入流迭代器:

1.定义方法

istream_iterator<要从流中读取的数据类型> 迭代器名(绑定的流);//创建的时候,就会调用标准输入

istream_iterator<要从流中读取的数据类型> 迭代器名;  //没有绑定流,指向流的结束位置

2.支持操作

*:解引用,读取流中的数据,但数据还在缓冲区

++:自增会调用输入。前缀:流前移一位,返回移动后的迭代器。后缀:先存储自增前的数据,在流移动一位,返回移动前迭代器。

== or !=:相等的情况为:首先迭代器读取的必须是相同的数据类型,如果两个迭代器都是end则相等,?

it->mem:相当于*it.men;

三、输出流迭代器:

1.定义方法

ostream_iterator<要从流中读取的数据类型> 迭代器名(绑定的流,元素分隔符);  //输出流迭代器必须绑定流!

2.支持操作

*:解引用,输出流中的数据  //一般输出流迭代器都带解引用,因为这样才能完成输出

++:前缀:流前移一位,返回移动后的迭代器。后缀:先存储自增前的数据,在流移动一位,返回移动前迭代器。

it->mem:相当于*it.men;

四、例子:

#include<iostream>
#include<iterator>
#include<string>
using namespace std;

int main()
{
    istream_iterator<string> in_iter(cin),eof;         //注意:stream_iterator<string> in_iter(cin)要求第一次输入
    ostream_iterator<string> out_iter(cout,"\n");  // 绑定流对象cout,元素之间分隔符为换行
    while(in_iter!=eof)
   {
        *out_iter=*in_iter;    //输入流解引用,取得值后,给输出流,输出。

        ++out_iter
        ++in_iter;
   }
 }

 

本文链接


    
[3]字符统计算法(改进版)
    来源:    发布时间: 2013-10-17

       前面那篇关于字符统计的算法只能找出出现次数最多的一个字符,对于“aaabbb”这些有2个或以上的出现次数最多的情况无法全部找出来,于是做了一下改进,解决了这个问题。现在的算法并没有增加时间复杂度,但增加了空间复杂度。有什么问题欢迎交流。

1 #include <stdio.h>
2 #include <string.h>
3
4
5 //要统计的字符串
6 char *s = "abbbbccddddeeeegikgvvbdful697574999999eeeebrykjty478559454hhsdf";
7
8
9 int main(void)
10 {
11 int len,i,n=0;
12 int char_count;
13
14 //字符串中每个字符出现的次数,最多能表示128种字符(7位ASCII码)
15 char times[128]={0};
16 //存放出现次数最多的字符
17 char max_count_char[128];
18
19 char_count = 0;
20 //字符串长度
21 len = strlen(s);
22
23 //统计字符串各个字符出现的次数
24 for(i=0;i<len;i++)
25 times[s[i]]++;
26
27 //找出字符串中出现次数的最大值
28 for(i=0;i<128;i++)
29 {
30 if(times[i] > char_count)
31 char_count = times[i];//出现次数,始终保存当前出现次数的最大值
32 }
33
34 //找出有几个出现次数最大的字符
35 for(i=0;i<128;i++)
36 {
37 //与出现次数的最大值比较
38 if(times[i] == char_count)
39 {
40 //相等则保存该字符
41 max_count_char[n] = (char)i;
42 n++;
43 }
44 }
45
46 //打印所有出现次数最多的字符
47 for(i=0;i<n;i++)
48 printf("出现最多的字符是:%c ,出现的次数为:%d次\n",max_count_char[i],char_count);
49
50 return 0;
51 }

运行效果:

 

 

本文链接


    
最新技术文章:
论坛 iis7站长之家
▪C++设计模式之迭代器模式
▪C++实现动态分配const对象实例
▪C++设计模式之中介者模式
▪C++设计模式之备忘录模式
▪C++插入排序算法实例
▪C++冒泡排序算法实例
▪C++选择排序算法实例
▪C++归并排序算法实例
▪C++设计模式之观察者模式
▪C++中复制构造函数和重载赋值操作符总结
▪C++设计模式之状态模式
▪C++设计模式之策略模式
▪C++设计模式之访问者模式
▪C++设计模式之模板方法模式
▪C++实现下载的代码
▪C++模板之特化与偏特化详解
▪C++实现查壳程序代码实例
▪C语言、C++内存对齐问题详解
▪C语言、C++中的union用法总结
▪C++基于CreateToolhelp32Snapshot获取系统进程实例
▪C++中memcpy和memmove的区别总结
▪C++通过TerminateProess结束进程实例
▪C++内存查找实例
▪C++实现CreatThread函数主线程与工作线程交互的...
▪C++设计模式之桥接模式
▪C++中关键字Struct和Class的区别
▪C++设计模式之组合模式
▪C++ COM编程之什么是组件?
▪C++ COM编程之什么是接口?
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3