低调、勤奋。
发布时间:2013-01-07 10:01:04
第一部分:宏为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销,所以调用一个宏比调用一个函数更有效率。但是宏也有很多的不尽人意的地方。1、宏不能访问对象的私有成员。2、宏的定义很容易产生二意性。我们举个例子:#define square(x) (x*x)我们用一个数字去调......【阅读全文】
发布时间:2013-01-06 21:32:39
基本概念:泛型算法本身从不执行容器操作,只是单独依赖迭代器和迭代器操作实现。算法也许会改变存储在容器中的元素的值,也许会在容器中移动元素,但是,算法从不直接添加或删除元素。头文件:#include <algorithm>#include <numeric>1、只读算法//把string类型的vector容器中的元素连接起来。string sum = accumulate(v.begin(), v.end(), string(""));//把int型的vector容器中元素累加int sum = accumulate(v.begin(), v.end(), 100); /......【阅读全文】
发布时间:2012-12-30 11:24:08
一、pair类型pair包含两个数据值,与容器一样,pair也是一种模版类型。在创建pair对象时,必须提供两个类型名:pair对象所包含的两个数据成员各自对应的类型名字,这两个类型必须相同。如:pair<string, string> anon;pair<string, int> word_count;pair<string, vector<int> > line;可采用typedef简化其声明:如:typedef pair<string, string> Author; Auth......【阅读全文】
发布时间:2012-12-29 20:25:57
一、string的常用操作 string s; 定义一个新的空string对象,命名为s string s(cp); 定义一个新的string对象,用cp所指向的(以空字符null结束的)c风格字符串初始化该对象。 string s(s2); 定义一个新的string对象,并将它初始化为s2de副本。 is >> s; 从输入流is中读取一个以空白字符分割的字符串,写入s os << s; &nb......【阅读全文】
发布时间:2012-12-22 20:19:21
一、 顺序容器类型 顺序容器 vector 支持快速随机访问,相当于数组 list 支持快速插入和删除,相当于链表 deque 双端队列 顺序容器适配器 statck 后进先出(LIFO)堆栈 queue 先进先出(FIFO)队列 priority_queue 有优先级管理的队列 二、头文件 #include<vector> #include<list> #include<deque> 所用容器都是类模版 vector&l......【阅读全文】