复习小记----第9章 标准容器
来源:互联网 发布:淘宝店铺星级规则 编辑:程序博客网 时间:2024/06/07 10:00
1. 初始化顺序容器时,若不使用默认构造函数(vector<int> ivec),则必须指出该容器有多少个元素并提供初值。一种方法是将新创建的容器初始化为一个同类型的已存在的容器副本。
2. 不能直接将一种容器内的元素复制给另一种容器。但可以通过迭代器Iterator来间接实现该功能,且不要求容器类型相同——容器可以不同(可以一个是vector一个是list);元素类型也可以不同,只要满足一个条件:将要被复制的元素可以转换为所构建的新容器的元素类型。这种特性提供了一种用一个容器内的元素子集初始化另一个容器的方法。
3. 指针也是迭代器,可以使用内置数组中的一对指针来初始化一个容器。
4. 用作容器元素的类型须满足:支持赋值运算(即“=”运算符),支持复制操作。除引用(它不支持一般意义的赋值运算)外,所有内置类型或复合类型都可用做元素类型;除IO标准库类型外,其他标准库类型都是有效的容器元素类型。
5. 容器元素都是副本。
6. 新元素的插入在迭代器指向的位置之前,考虑之一是end迭代器指向最后一个元素的下一位置。
7. 任何insert或push操作都可能导致迭代器失效。例如在编写循环元素插入到容器中时,程序必须确保迭代器在每次循环后都得到更新。
8. 赋值和assign操作都会使得左操作数融洽的所有迭代器失效,但是swap操作不会。完成swap操作后,尽管被交换的元素已经存放在另一容器中,但迭代器任然指向相同的元素。
例程:
void main(){int arrayIntA[]={1,2,3,4,5};int arrayIntB[]={10,20,30,40,50};vector<int> vectorIntA(arrayIntA,arrayIntA+sizeof(arrayIntA));vector<int> vectorIntB(arrayIntB,arrayIntB+sizeof(arrayIntB));vector<int>::iterator secondPostion=vectorIntA.begin()+1;cout<<"secondPostion:"<<*secondPostion<<endl;vectorIntA.swap(vectorIntB);cout<<"after swap"<<endl<<"secondPostion:"<<*secondPostion<<endl;system("pause");}
结果:
10. 默认的stack和queue适配器都是基于deque容器实现的,而priority_queue则是基于vector实现的。在创建适配器时,通过讲一个顺序容器指定为适配器的第二个“类型实参”,可覆盖其关联的基础容器类型。如:stack<string, vector<string>>。
stack可以建立在vector、list或者deque上;
queue可以建立在list上;
priority_queue可以健在vector或deque上。
- 复习小记----第9章 标准容器
- 复习小记----第10章 关联容器
- 复习小记----第8章 标准IO
- 复习小记----第3、4、5章 数组、指针、标准库类型、表达式
- 复习小记----第7章 函数
- 复习小记----第12章 类
- 复习小记----第2章 变量和基本类型
- 第9章 顺序容器
- 第 9 章 顺序容器
- 第9章 顺序容器
- 容器复习
- 后缀自动机复习小记
- 后缀数组复习小记
- 后缀数组复习小记
- 后缀数组复习小记
- splay复习小记
- 扩展KMP复习小记
- python复习。知识点小记
- 什么是 WPS(Wi-Fi Protected Setup)
- 算法学习之数据结构之二叉查找树
- Objective-C与JavaScript的交互
- 织梦dedecms网站六大SEO优化技巧分享
- How To Setup Password Security? (Doc ID 564125.1)
- 复习小记----第9章 标准容器
- linux 命令收集
- 一个计算机专业学生几年的Java编程经验汇总
- HDU 4314 矮人逃脱dp
- C# using
- .net抓取数据C#和PHP的结合(续)
- Struts2中访问Web元素的3中方法
- linux子系统的初始化_subsys_initcall():那些入口函数【转】
- Nginx负载均衡