C++基础::STL中的定理
2015-11-16 11:27
281 查看
C++标准库中凡”凡必须返回两个value”的函数都使用pair对象
我们以set的插入成员函数insert为例加以说明,因为set容器是一个自动排序的容器,set容器要求,插入元素要返回插入的位置以插入是否成功两个属性:
set<int> iset; ... pair<set<int>::iterator, bool> res = iset.insert(1); // 这样的写法并无太多实际的意义,不太会直接操纵这样一个pair对象 // 或者用auto 关键字 // 或者直接 if(iset.insert(1)) if (res.second) cout << "1 inserted" << endl; else cout << "1 already exists" << endl;
STL容器提供的是“value semantic”而不是“reference semantic”
除了效率的问题之外,value semantic的一大问题是无法在数个不同的容器中管理同一份对象。那么我们该如何在STL容器中实现
reference semantic,这个问题可参看<C++STL::两种方式实现STL容器的reference语义>。
empty
对于所有的标准库类型其empty()成员函数都是一种查询操作,用以询问是否容器为空,因此返回一个bool类型变量,而不是一种清零操作。
相关文章推荐
- 将不规则四边形图像插值成为一个矩形图像
- 深入理解C++异常
- C语言用分别用递归和循环求数字的阶乘的方法
- 【C语言】 冒泡排序子例
- 《Effective C++》Rule 18: 让接口容易被正确使用,不易被误用
- C++学习第四课—串
- 【C语言】 冒泡排序
- C++基础::非类型模板参数在STL中的应用
- 切忌在类的初始化列表中调用类的成员函数
- C++88个注意点之1~5
- 关于数据类型与指针的小笔记--初始化问题&&数组
- C++ 动态特性
- 13.c/c++程序员面试宝典-宏定义
- C语言函数调用及栈帧分析
- 几种常见排序算法的c语言实现
- 明白volatile的意义
- C++新标准:列表初始化
- R性能优化
- C++中堆和栈的区别,自由存储区、全局静态存储区和常量存储区
- C++重载,覆盖与隐藏