标准库定义了3种顺序容器:vector支持随机访问,
list支持快速插入删除,
deque双端队列。
他们的差别在于访问元素的方式,以及添加或删除元素操作的运行代价。
1. 容器元素的初始化
默认的构造函数:list<int> ilist; list容器,里面内容是int类型的内容
deque<Sales_item> items; 空容器deque,里面装的是Sales_item类型的
。
除了默认的构造函数,容器类型还提供了其他的构造函数,可以用这些构造函数指定元素初值:
C<T> c;创建一个名为c的空容器。C是容器类型名,如vector,T是元素类型,如int或string适用于所有容器。
C c(c2);创建容器c2的副本c;c和c2必须具有相同的容器类型,并存放相同类型的元素,适用于所有容器
还有类似几种构造函数如C c(b,e);C c(n,t); C c(n)
1将一个容器初始化为另一个容器的副本,当不适用默认构造函数,而是用其他构造函数初始化顺序容器时,必须指出该容器有多少个元素,并提供这些元素的初值
。同时指定元素个数和初值的一个方法是将新创建的容器初始化为一个同类型的已存在容器的副本:vector<int> ivec;vector<int> ivec2(ivec);
2初始化为一段元素的副本,尽管不能直接将一种容器内的元素复制给另一种容器,但系统允许通过传递一对迭代器
间接实现该功能。使用迭代器时,不要求容器类型相同。容器内的元素类型也可以不相同,只要他们相互兼容,能够将要复制的元素转换为所构建的新容器的元素类型,即可实现复制。迭代器标记了要复制的元素范围,这些元素用于初始化新容器的元素。迭代器
标记出要复制的第一个元素和最后一个元素。采用这种初始化形式可复制不能直接复制的容器。更重要的是,可以事先复制其他容器的一个子序列:
回顾一下指针,我们知道指针就是迭代器,因此允许通过使用内置数组中的一堆指针初始化容器也就不奇怪了:
3分配和初始化指定数目的元素,创建顺序容器时,可显示指定容器大小和一个(可选的)元素初始化式。我们也可以只指定容器的大小:list<int> ilist(list_size);
在容器中添加元素:c.push_back(t)在容器末尾加上t元素,返回值是void
c.push_front(t)只有list和deque容器能使用返回值是void
c.insert(p,t)在p迭代器指向的位置前面加上元素t,返回指向新元素的迭代器
c.insert(p,n,t)在迭代器p所指向的位置前面加入n个值为t的元素,返回void类型
c.insert(p,b,e)在迭代器p所指向的位置前面,加入由迭代器b,e所标记范围内的元素,返回void类型
关系操作符:所有容器都支持用关系操作符来实现两个容器比较,比较的两个容器类型要相同,其元素类型也要相同。容器的比较是基于容器元素的比较。如果容器内的元素不支持某种操作符,则该类容器就不能做此种比较。
容器大小的操作:所有容器类型都提供四种与容器大小相关的操作。
c.size() 返回c中元素的个数,返回类型为c::size_type
c.max_size()返回容器c可容纳的最多元素个数,返回类型为c::size_type
c.empty()返回标记容器大小是否为0的布尔值
c.resize(n)调整容器c的长度大小,使其能容纳n个元素,如果n<c.size(),则删除多出来的元素,否则,添加采用初始化的新元素
c.resize(n,t)调整容器c的长度大小,时期能容纳n个元素,所有新添加的元素值都为t
元素的访问:访问顺序容器内元素的操作
c.back()
c.front()
c[n]
c.at(n)
删除元素
赋值与swap
vector容器的自增长
分享到:
相关推荐
C++Primer第五版 第9章 顺序容器(练习解答)个人总结的文档+源码
第九章 顺序容器 43 第十章 关联容器 60 第十一章 泛型算法 75 第十二章 类和数据抽象 86 第十三章 复制控制 94 第十四章 重载操作符与转换 102 第十五章 面向对象编程 116 第十六章 部分选做习题 133 第十七章 ...
第9章 顺序容器 263 9.1 顺序容器的定义 264 9.1.1 容器元素的初始化 265 9.1.2 容器内元素的类型约束 267 9.2 迭代器和迭代器范围 268 9.2.1 迭代器范围 270 9.2.2 使迭代器失效的容器操作 271 9.3 顺序容器的操作...
第9 章顺序容器...................................................... 193 练习9.1 练 习9.52 第10章泛型算法..................................................... 234 练习10.1 练 习10.42 目录 ◄ v 第11章...
1.第9章 顺序容器 - STL deque 2.第9章 顺序容器 - STL list 3.第9章 9.7 容器适配器 - 栈适配器 4.第9章 9.7 容器适配器 - 队列 5.第9章 9.7 容器适配器 - 优先级队列 6.第9章 9.1 顺序容器的定义 7.第...
第9章 顺序容器 291 9.1 顺序容器概述 292 9.2 容器库概览 294 9.2.1 迭代器 296 9.2.2 容器类型成员 297 9.2.3 begin和end成员 298 9.2.4 容器定义和初始化 299 9.2.5 赋值和swap 302 9.2.6 容器...
此程序是c++ primer 中,第九章有关顺序容器的练习内容。程序为自己编写的模板,感兴趣的朋友可以下载然后自行修改,实现功能
第9章 顺序容器 291 9.1 顺序容器概述 292 9.2 容器库概览 294 9.2.1 迭代器 296 9.2.2 容器类型成员 297 9.2.3 begin和end成员 298 9.2.4 容器定义和初始化 299 9.2.5 赋值和swap 302 9.2.6 容器...
第9章 顺序容器 第10章 关联容器 第11章 泛型算法 第三部分 类和数据抽象 第12章 类 第13章 复制控制 第14章 重载操作符与转换 第四部分 面向对象编程与泛型编程 第15章 面向对象...
第9章 顺序容器 第10章 关联容器 第11章 泛型算法 第三部分 类和数据抽象 第12章 类 第13章 复制控制 第14章 重载操作符与转换 第四部分 面向对象编程与泛型编程 第15章 面向对象编程 ...
第9章 顺序容器 193 练习9.1~练习9.52 第10章 泛型算法 234 练习10.1~练习10.42 第11章 关联容器 273 练习11.1~练习11.38 第12章 动态内存 297 练习12.1~练习12.33 第13章 拷贝控制 331 练习13.1~...
37 第九章 顺序容器 ..................................................................................................................................................... 43 第十章 关联容器 ..............
The Solutions for C++ Primer 5th目录第I部分 C++基础第2章 变量和基本类型第3章 字符串、向量和数组第4章 表达式第5章 语句第6章 函数第7章 类第II部分 C++标准库第8章 IO库第9章 顺序容器第10章 泛型算法第11章 ...
##C++ 入门 5 个回答 笔记 编译时使用-std=c++11 (可选: -pedantic -Wall )标志,g++ -...第 9 章顺序容器 第 10 章通用算法 第 11 章关联容器 第三部分:课堂作者工具 第四部分:高级主题 第 19 章专用工具和技术
第9章顺序容器 第10章通用算法 第11章关联容器 第十二章动态内存 第三部分:面向班级作者的工具 Chapter 13.复制控制 第14章重载的操作和转换 第15章面向对象的编程 第16章模板和泛型编程 第四部分:高级主题 第十七...