STL第七课
来源:互联网 发布:origin for mac绘图 编辑:程序博客网 时间:2024/05/16 04:57
Stream Iterators:一种用来读写stream的迭代器
1.istream_iterator<string>(cin):元素透过operator>>被读取出来;
2.istream_iterator<string>():调用istream iterators的default构造函数, 产生一个代表"流结束符号"的迭代器.
3.ostrream_iterator<string>(cout, "/n"):透过operator<<向cout写入strings.第二个参数被做为元素间的分隔符, 可有可无.
算法unique_copy()会消除毗邻的重复值.
Reverse Iterators(逆向迭代器):第三种预先定义的迭代配接器.
它将increament运算转换为decreament运算. 反之亦然. 所有容器都要以透过成员函数rbegin()和rend()产生出reverse iterators.
rbegin()指向群集最后一个元素的下一位置.*coll.rbegin()返回的是最后一个元素的值.
rend()指向第一个元素的前一个位置.*coll.rend()同*coll.end()一样也没有定义.
注意:虽然rbegin()和end()所指向的位置相同,都是最后一个元素的下一位置,可是rbegin()的值是container的最后一个元素的值,end()指向的值却是空。
Manipulating Algorithms(更易型算法):删除或重排或修改元素的算法.
移除元素:remove()
remove()并没有改变群集中的元素的数量. end()返回的还是当初那个终点, size()返回的还是当初那个大小.
你可以把remove()的返回值设定给end迭代器:
list<int>::iterator end = remove(coll.begin(), coll.end(), 3);
这个end是逻辑上的新终点.
你还可对通过测定群集之"逻辑"终点和实际终点间的距离, 获得被删除元素的数量:
distance(end, coll.end());
distance()返回两个迭代器间的距离.
erase(end, coll.end()):删除参数所指区间内的全部元素.
如果你需要以单一语句来删除元素, 可以如此操作:
coll.erase(remove(coll.begin(), coll.end(), 3), coll.end());
任何以迭代器访问容器元素的算法, 都不得透过迭代器调用容器类别所提供的任何成员函数.
关联容器不能被当作更易型算法的操作目标, 否则会破坏关联型容器的已序特性.如果你更易关联式容器中的元素, 会导致编译错误.
那么如何从关联容器中删除元素呢?方法是调用它们的成员函数.每一种关联式容器都提供用以移除元素的成员函数.
使用自定义的泛型函数
STL是一个可扩展的框架.
为了让我们方便写出真正的泛型函数, 每一种容器都提供了一些内部的型别定义.
- STL第七课
- C++ STL 第七次实验
- 第七章STL之仿函数
- 第七课
- GeekBand C++ STL与泛型编程 第七周笔记
- [Boolan] C++第七周 STL 泛型编程(一)
- 【学习笔记】《STL使用入门教程》第七讲:STL的综合应用
- 第七课:输出字符串
- java第七课
- 第七课 策略模式
- 第七课作业
- WebGL 第七课 中文翻译
- 第七课学习
- java 第七课 变量
- 吉他第七课
- 异常处理(第七课)
- Android第七课--Dialog
- C++第七课
- [转]细节决定成败 ASP.NET中的蝴蝶效应
- Windows API
- WiMax与IEEE 802.16组网技术分析(组图)
- Hawk: Google手机将会动谁的奶酪
- JSP中文乱码处理(过滤器)
- STL第七课
- 绿色和平简讯:绿色和平万里追踪,制止日本捕鲸!
- SQL Server数据库开发的二十一条军规
- 对于系统设计的一些想法
- 在VMWare上安装VxWorks操作系统
- 奋斗宣言
- 集成化企业级建模工具—PowerDesigner12.0(转)
- 谈一场不属于我,没有结果的恋爱
- 面对软件错误构建可靠的分布式系统-1摘要