C++ Primer 笔记——顺序容器】的更多相关文章

1.标准库中定义了一些顺序容器,所有顺序容器都提供了快速顺序访问元素的能力. 2.如果容器的元素类型没有默认构造函数,那么在构造这个容器的时候不能只指定这个容器的数目,因为没有办法默认构造这些元素. 3.常见的一些容器操作 4.当一个容器初始化另一个容器拷贝时,两个容器的元素类型必须完全匹配,如果用一个容器的迭代器去初始化另一个容器时,只要元素类型可以转换即可. 5.当定义一个array时除了指定类型之外还要定义它的大小,array可以进行拷贝赋值. std::array<> arr = {,…
定义: #include <vector> #include <list> #include <deque> vector<int> svec; list<int> ilist; deque<int> items; 初始化: 1. 将一个容器初始化为另一个容器的副本 容器类型,元素类型必须相同 vector<int> a; vector<double> d(a); list<double> b; v…
1.关联容器支持高效的关键字查找和访问,标准库提供8个关联容器. 2.如果一个类型定义了“行为正常”的 < 运算符,则它可以用作关键字类型. 3.为了使用自己定义的类型,在定义multiset时必须提供两个类型:自定义类类型以及比较操作类型(函数指针). class test { public: test(int i) { m_id = i; } int m_id; }; bool compare_test(const test& t1, const test& t2) { retu…
<C++ Primer 4th>读书笔记 顺序容器内的元素按其位置存储和访问.容器类共享公共的接口,每种容器类型提供一组不同的时间和功能折衷方案.通常不需要修改代码,只需改变类型声明,用一种容器类型替代另一种容器类型,就可以优化程序的性能. 标准库定义了三种顺序容器类型:vector.list 和 deque(是双端队列“double-ended queue”的简写,发音为“deck”).它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价.标准库还提供了三种容器适配器(adap…
第9章 顺序容器 引: 顺序容器: vector 支持快速随机访问 list 支持快速插入/删除 deque 双端队列 顺序容器适配器: stack 后进先出栈 queue 先进先出队列 priority_queue 有优先级管理的队列 1. 容器元素的初始化 C<T> c; //empty C c(c2); //副本 C c(b, e); //迭代器 C c(n, t); //n个相同元素 // 以下只适用于顺序容器 C c(n); 2. 容器内元素的类型约束 (1)元素必须支持赋值运算 (…
顺序容器类型 类型 解释 vector 可变大小数组.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢 deque 双端队列.支持快速随机访问.在头尾位置插入.删除速度很快 list 双向链表.只支持双向顺序访问.在list中任何位置进行插入.删除操作速度都很快 forward_list 单向链表.只支持单向顺序访问.在链表任何位置进行插入.删除操作速度都很快 array 固定大小数组.支持快速随机访问.不能添加或删除元素 string 与vector相似的容器,但专门用于保存字符.随机…
一个容器是特定类型对象的集合 顺序容器中元素的顺序与其加入容器的位置对应 关联容器中元素的顺序由其关联的关键字决定,关联容器分为有序关联容器和无序关联容器 所有容器类共享公有接口,不同容器按不同方式扩展. 标准库还提供了3种容器适配器,为容器操作定义了不同的接口 9.1 顺序容器概述 所有容器都可快速访问元素,但在不同方面有折中: 添加/删除元素的代价 非顺序访问的代价 顺序容器的类型 vector 可变数组大小.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢. deque 双端队列.…
由于书籍上写的已经很经典了,故大部分用图片的形式来阐述概念,代码纯手打进行验证. 1.顺序容器类型:vector.deque.list.forword_list.array.string. 2.顺序容器概述: 3.小结 4. 验证代码如下: #include <iostream> #include <vector> #include <array> #include <string> #include <list> using namespace…
顺序容器的添加.访问.删除操作以及forward_list的特殊操作,还有迭代器失效问题. 一.向容器添加元素 // array不支持这些操作 // forward_list有自己撰于的版本的insert和emplace // forward_list不支持push_back和emplace_back // vector和string不支持push_front和emplace_front c.push_back(t); 在c的尾部创建一个值为t或由arg创建的元素 c.emplace_back(…
顺序容器属于C++ STL的一部分,也是非常重要的一部分. 顺序容器包括: std::vector,包含在头文件<vector>中 std::string, 包含在头文件<string>中 std::deque,包含在头文件<deque>中 std::list,包含在头文件<list>中 std::forward_list,包含在头文件<forward_list>中 std::array, 包含在头文件<array>中 顺序容器几乎可…
 参考:http://www.cnblogs.com/kurtwang/archive/2010/08/19/1802912.html 1..顺序容器:vector(快速随机访问):list(快速插入删除):deque(双端队列) 2.顺序容器适配器:stack 后进后出,栈:queue 后进先出,队列:priority_queue 优先队列 3. 初始化:    a.  C<T> c: 创建名为c的空容器,适用于所有容器    b.  C c(c2): 创建容器c2的副本,要求c与c2有相同…
练习9.1:对于下面的程序任务,vector.deque和list哪种容器最为适合?解释你的选择的理由.如果没有哪一种容器优于其他容器,也请解释理由.(a) 读取固定数量的单词,将它们按字典序插入到容器中.我们将在下一章中看到,关联容器更适合这个问题.(b) 读取未知数量的单词,总是将单词插入到末尾.删除操作在头部进行.(c) 从一个文件读取未知数量的整数.将这些数排序,然后将它们打印到标准输出.(a)应该使用array,因为单词的数量是固定的,也就是说元素的个数是固定的,因此符合array的特…
关联容器 与顺序容器不同,关联容器的元素是按keyword来訪问和保存的.而顺序容器中的元素是按他们在容器中的位置来顺序保存的. 关联容器最常见的是map.set.multimap.multiset map的元素以键-值[key-value]对的形式组织:键用作元素在map中的索引,而值则表示所存储和读取的数据. set仅包括一个键.并有效的支持关于某个键是否存在的查询. pair类型 首先介绍下pair,pair定义在utility头文件里,一个pair保存两个数据成员,类似容器,pair是一…
1.顺序容器的元素排列次序与元素的值无关,而是由元素添加到容器里的次序决定. 2. 顺序容器 vector                               支持快速随机访问 list                                    支持快速插入/删除 deque                              双端队列 顺序容器适配器 stack                                        后进先出(栈) queue…
PS:删除元素的成员函数并不检查其参数.在删除元素之前,程序员必须确保它们是存在的. 1.迭代器的范围是[begin,end)左闭右开. 2.对构成迭代器的要求: ①它们指向同一个容器中的元素或者容器的最后一个元素之后的位置. ②end不在begin之前. 3.当将一个容器初始化为另一个容器的拷贝的时候,两个容器的容器类型和元素类型都必须相同.但是,当传递迭代器参数来拷贝一个范围的时候,新容器和原容器中的元素类型也可以不同,只要能将要拷贝的元素转换为要初始化的容器的元素类型就可以了. 4.为了使…
顺序容器概述 顺序容器的类型有: 类型 说明 vector 可变长度数组. 支持快速随机访问. deque 双端队列. 支持快速随机访问. list 双向链表. 只支持双向顺序访问. forward_list 单向链表. 只支持单向顺序访问. array 固定大小数组. string 与vector相似的容器, 专门用于保存字符串. string和vector将元素保存在连续的内存空间中, 因而支持随机访问. list和forward_list是链表的数据结构, 在容器的任何位置添加和删除元素都…
1 顺序容器的定义 容器是容纳特定类型对象的集合. 顺序容器:将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器. 标准库的三种顺序容器类型:vector, list 和 deque. 适配器:stack,queue和priority_queue类型.适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型. 头文件: #include<vector> #include<list> #include<deque>…
C++ Primer笔记 ch2 变量和基本类型 声明 extern int i; extern int i = 3.14;//定义 左值引用(绑定零一变量初始值,别名) 不能定义引用的引用:引用必须被初始化:类型严格匹配:不能绑定字面值/计算结果:无法二次绑定 int i=4; int &r=i; 指针 本身是对象,允许赋值和拷贝:无需定义时赋初值:类型严格匹配 int *ip1, *ip2; int ival = 42; int *p = &ival; *p = 0; cout <…
容器是一种容纳特定类型对象的集合.C++的容器可以分为两类:顺序容器和关联容器.顺序容器的元素排列和元素值大小无关,而是由元素添加到容器中的次序决定的.标准库定义了三种顺序容器的类型:vector.list和deque(双端队列).此外,标准库还提供了三种容器适配器:stack.queue和prioroty_queue类型.适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型.见下表 顺序容器 vector 支持快速随机访问 list 支持快速插入/删除 deque…
list 双向链表,可以双向遍历,既指向前驱节点,又指向后继但不能随机访问任意元素,可动态增加或者减少元素,内存管理自动完成,增加任何元素都不会使迭代器失效, 删除元素时,除了指向当前被删元素的迭代器外,其他迭代器都不会失效 iterator指向当前被删除元素的下一个. deque vector是单向开口的连续空间,deque是双向开口的连续线性空间 双向开口则意味着可以在头尾两端分别插入或者删除元素 关联容器和顺序容器的区别在于:关联容器通过key存储读取元素,而顺序容器则是通过元素在容器中的…
以前很少做删除操作,vector一直当成数组用,而实际追求效率时又经常舍弃vector选用C风格数组.看<C++ Primer>到顺序容器删除这节时试着实现课后习题结果一动手我就出错了. 习题是将数组int ia[]拷贝到std::vector<int>中,并删除偶数元素. 先给出我的错误代码 int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89 }; vector<int> v(begin(ia), end(ia)); fo…
C++提供了使用抽象进行高效编程的方式,标准库中定义了许多容器类以及一系列泛型函数,使程序员可以更加简洁.抽象和有效地编写程序,其中包括:顺序容器,关联容器和泛型算法.本文将简介顺序容器(vector,list和deque)的相关内容. 1.顺序容器的概念 标准库vector类型,就是一种最常见的顺序容器,它将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器.顺序容器的元素排列顺序与其值无关,而仅仅由元素添加到容器里的次序决定. 标准库定义了三种顺序容器:vecto…
本章主要介绍了标准库顺序容器,包括 顺序容器的公共接口,如构造函数,添加/删除操作等 利用迭代器访问容器 不同顺序容器的差异 string的特殊操作 容器适配器,如栈,队列等 9.1 “按字典序插入到容器中”需要对数据进行排序,因此需要再容器中进行频繁的插入操作,vector和deque都是寻秩操作,vector在尾部以外的位置插入都很慢,deque在头尾以外位置插入很慢,而list在任意位置插入/删除都较快,所以(a)应使用list更合适. (b)需要头尾插入/删除操作,list和dque都可…
cb09a_c++_顺序容器的操作2在顺序容器中添加元素vector不能向前插入数据,list可以用insertc.push_back(t);c.push_front(t);c.insert(p,t);在迭代器p,插入tc.insert(p,n,t);在迭代器p,插入n个tc.insert(p,b,e);把迭代器b,e之间的数据,插入到迭代器p指向的位置.容器元素都是副本添加元素可能会使迭代器失效避免存储end操作返回的迭代器 welcome to discusstxwtech@163.com…
0.前言 本文简单地总结了STL的顺序容器的知识点.文中并不涉及具体的实现技巧,对于细节的东西也没有提及.一来不同的标准库有着不同的实现,二来关于具体实现<STL源码剖析>已经展示得全面细致.所以本文仅仅是对容器基础知识的归纳.至于容器提供的接口与使用实例,建议查取官方文档.文章难免有错漏,希望指出. 1.容器概论 容器,置物之所也.像桶可装水,碗可盛汤,C++的容器,可以存储对象.容器有多种,用来处理不同的元素操作诉求.按照元素存储到容器中以及访问方式的差异,容器分为顺序容器与关联容器.顺序…
所谓容器,就是一个装东西的盒子,在c++中,我们把装的东西叫做“元素” 而顺序容器,就是说这些东西是有顺序的,你装进去是什么顺序,它们在里面就是什么顺序. c++中的顺序容器一共有这么几种: vector 可变大小数组 deque 双端队列 list 双向链表 forward_list 单向链表 array 固定数组大小 string 与vector相似的容器,但专门用于保存字符 这些容器可以让我们方便地放元素,取元素,but,她们在:添加.删除.非顺序访问,这些方面的性能都是不同滴(根据需要适…
—顺序容器:vector,list,queue1.顺序容器的常见用法: #include <vector> #include <list> #include <queue> (1)vector声明 vector<string> svec;(2)添加元素: c.push_back(t): 在容器 c 的尾部添加值为 t 的元素.返回 void 类型  c.push_front(t):在容器 c 的前端添加值为 t 的元素.返回 void 类型 只适用于 lis…
1.顺序容器:vector,deque,list 容器类共享公共接口,只要学会其中一种类型就能运用另一种类型.每种容器提供一组不同的时间和功能这种方案,通常不需要修改代码,秩序改变类型声明,每一种容器类型替代另一种容器类型,就可以优化程序的性能.容器值定义了少量操作,大多数额外的操作有算法库提供. 2.为了使用顺序容器,要包含头文件: #include<vector> #include<list> #include<deque> 3.所有容器都是类模板,要定义某种容器要…
一.顺序容器的分类 顺序容器:vector向量.list链表.deque双端队列: 优先级最高的是vector向量,它的速度比较快,优点最多: 在程序设计中,容器可以切换: #include <iostream> #include <vector> #include <list> #include <deque> using namespace std; int main() { vector<int> Ivec; list<int>…
顺序容器: vector:数组 list:链表 deque:双端数组 顺序容器适配器: stack:堆栈 queue:队列 priority_queue:优先级队列 deque是一个动态数组 deque与vector非常类似: deque可以在在数组开头和末尾插入和删除数据: #include <deque> #include <algorithm> deque<int>::iterator iElemetnLocater; for(iElementLocater a.…