阿牧路泽

哪有那么多坚强,无非是死扛罢了
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

4、【C++ STL】容器总结

Posted on 2018-10-19 16:32  阿牧路泽  阅读(214)  评论(0编辑  收藏  举报

一、容器的共通能力

  1、所有容器提供的都是value语义,而非reference语义,容器执行插入元素的操作时,内部实施拷贝动作。所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造函数);

  2、每个容器都提供可返回迭代器的函数,运用返回的迭代器就可以访问元素。

  3、通常STL不会丢出异常。要求使用运行者对确保传入正确的参数。

二、容器的共通操作

1、初始化

  每个容器都提供了一个默认构造函数,一个拷贝构造函数。

1 list<int> l;
2 ...
3 vector<int> ivec(l.begin(), l.end());//以某个容器的元素为初值完成初始化
4 
5 int array[] = {1, 2, 3, 4, 5};
6 ...
7 set<int> iset(array, array+sizeof(array)/sizeof(array[0]));//以某个数组的元素为初值完成初始化

2、与大小相关的操作函数

1 c.size()  //传回容器中的元素数量
2 c.empty)() //判断容器是否为空(相当于size() == 0,但可能更快)
3 c.max_size() //传回元素的最大可能数量

3、返回迭代器的函数

1 c.begin()   //传回一个迭代器,指向第一个元素
2 c.end()     //传回一个迭代器,指向最后元素的下一个位置
3 c.rbegin()  //传回一个逆向迭代器,指向逆向寻访时的第一元素
4 c.rend()    //传回一个逆向迭代器,指向逆向寻访时的最后一个元素的下一个位置

4、比较操作

1 c1 == c2    //判断是否c1 等于 c2
2 c1 != c2    //判断是否c1 不等于 c2,相当于!(c1 == c2)
3 c1 < c2     //判断是否c1 小于 c2
4 c1 > c2     //判断是否c1 大于 c2
5 c1 <= c2    //判断是否c1 小于等于 c2
6 c1 >= c2    //判断是否c1 大于等于 c2
7 c1 = c2     //将 c2  的所有元素指派个 c1