[C++ Primer] 第9章: 顺序容器】的更多相关文章

顺序容器概述 顺序容器的类型有: 类型 说明 vector 可变长度数组. 支持快速随机访问. deque 双端队列. 支持快速随机访问. list 双向链表. 只支持双向顺序访问. forward_list 单向链表. 只支持单向顺序访问. array 固定大小数组. string 与vector相似的容器, 专门用于保存字符串. string和vector将元素保存在连续的内存空间中, 因而支持随机访问. list和forward_list是链表的数据结构, 在容器的任何位置添加和删除元素都…
第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)元素必须支持赋值运算 (…
练习9.1:对于下面的程序任务,vector.deque和list哪种容器最为适合?解释你的选择的理由.如果没有哪一种容器优于其他容器,也请解释理由.(a) 读取固定数量的单词,将它们按字典序插入到容器中.我们将在下一章中看到,关联容器更适合这个问题.(b) 读取未知数量的单词,总是将单词插入到末尾.删除操作在头部进行.(c) 从一个文件读取未知数量的整数.将这些数排序,然后将它们打印到标准输出.(a)应该使用array,因为单词的数量是固定的,也就是说元素的个数是固定的,因此符合array的特…
由于书籍上写的已经很经典了,故大部分用图片的形式来阐述概念,代码纯手打进行验证. 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>中 顺序容器几乎可…
顺序容器类型 类型 解释 vector 可变大小数组.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢 deque 双端队列.支持快速随机访问.在头尾位置插入.删除速度很快 list 双向链表.只支持双向顺序访问.在list中任何位置进行插入.删除操作速度都很快 forward_list 单向链表.只支持单向顺序访问.在链表任何位置进行插入.删除操作速度都很快 array 固定大小数组.支持快速随机访问.不能添加或删除元素 string 与vector相似的容器,但专门用于保存字符.随机…
一个容器是特定类型对象的集合 顺序容器中元素的顺序与其加入容器的位置对应 关联容器中元素的顺序由其关联的关键字决定,关联容器分为有序关联容器和无序关联容器 所有容器类共享公有接口,不同容器按不同方式扩展. 标准库还提供了3种容器适配器,为容器操作定义了不同的接口 9.1 顺序容器概述 所有容器都可快速访问元素,但在不同方面有折中: 添加/删除元素的代价 非顺序访问的代价 顺序容器的类型 vector 可变数组大小.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢. deque 双端队列.…
关联容器的操作 除了和顺序容器定义的类型之外,关联容器还定义了一下几种类型: 关联容器额外的类型别名  key_type    此容器类型的关键字类型 mapped_type  每个关键字关联的类型,只 适用于map value_type 对于set,与key_type相同 对于map,为pair<const key_type, mapped_type> 关联容器的迭代器 当解引用一个关联容器迭代器时,会获得一个类型为value_type的值的引用.对于map而言,value_type是一个p…
 参考: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有相同…
目录 使用关联容器 关联容器概述 关联容器操作 无序容器 使用关联容器 关联容器与顺序容器有着根本的不同: 关联容器中的元素是按关键字来保存和访问的, 按顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的. 关联容器支持高效的关键字查找和访问. 有两个主要的关联容器类型: map和set. map: map中的元素是一些关键字-值(key-value)对, 关键字起到索引的作用, 值则表示与索引相关联的数据. set: set中每个元素只包含一个关键字, set支持高效的关键字查询操作--…
1 顺序容器的定义 容器是容纳特定类型对象的集合. 顺序容器:将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器. 标准库的三种顺序容器类型:vector, list 和 deque. 适配器:stack,queue和priority_queue类型.适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型. 头文件: #include<vector> #include<list> #include<deque>…
原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936460.html…
标准库定义了两种主要的关联容器:map和set map中的元素时一些关键字-值(key-value)对,关键字起到索引的作用,值则表示与索引相关的数据.set中每个元素只包含一个关键字,可以完成高效的关键字查询操作. 由map和set延伸出来一共8个关联容器,或者是一个map,或者是一个set,multi开头的是可以重复关键字的关联容器,unordered_开头的是无序关联容器.unordered_multi开头的是允许重复关键字的无序关联容器. map和multimap定义在头文件<map>…
单词转换就是:将一些缩写的单词转换为实际的文本.第一个文件保存的是转换的规则,而第二个文件保存的是要转换的文本. 假设单词转换的规则的文件如下: brb be right back k okay? y why r are u you pic picture thk thanks! l8r later 我们希望转换的文本为: where r u y dont you send me a picture okay? thanks! later 则程序应该生成这样的输出: where are you…
第九章 顺序容器 一.顺序容器概述 顺序容器(sequential container):为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应. 不同容器在不同的方面都有不同的性能折中: 向容器添加或者删除元素的代价 非顺序访问容器中元素的代价 1. 顺序容器类型 容器类型 解释 vector 可变大小数组.支持快速随机访问.在尾部之外的位置进行插入/删除元素操作可能很慢. deque 双端队列.支持快速随机访问.在头尾位置进行插入/删除操作速度…
练习11.1:描述map 和 vector 的不同. map是关联容器,vector是顺序容器,关联容器与值无关,vector则与值密切相关 练习11.2:分别给出最适合使用 list.vector.deque.map以及set的例子. list链表vector动态数组deque队列map映射set集合 练习11.3:编写你自己的单词计数程序. #include <iostream> #include <map> void words_count() { std::map<s…
第10章 关联容器 引: map set multimap multiset 1.pair类型 pair<string, int> anon anon.first, anon.second anon = make_pair(first, last) 2.关联容器 3.map类型 map<string, int> word_count; map<K, V>::key_type map<K, V>::mapped_type map<K, V>::va…
1.顺序容器的元素排列次序与元素的值无关,而是由元素添加到容器里的次序决定. 2. 顺序容器 vector                               支持快速随机访问 list                                    支持快速插入/删除 deque                              双端队列 顺序容器适配器 stack                                        后进先出(栈) queue…
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…
关联容器类型 解释 按关键字有序保存元素 -- map 关联数组:保存关键字-值对 set 关键字即值,即只保存关键字的容器 multimap 关键字可重复出现的map multiset 关键字可重复出现的set 无序集合 -- unordered_map 用哈希函数组织的map unordered_set 用哈希函数组织的set unordered_multimap 哈希组织的map:关键字可以重复出现 unordered_multiset 哈希组织的set:关键字可以重复出现 类型map和m…
本章主要介绍了标准库顺序容器,包括 顺序容器的公共接口,如构造函数,添加/删除操作等 利用迭代器访问容器 不同顺序容器的差异 string的特殊操作 容器适配器,如栈,队列等 9.1 “按字典序插入到容器中”需要对数据进行排序,因此需要再容器中进行频繁的插入操作,vector和deque都是寻秩操作,vector在尾部以外的位置插入都很慢,deque在头尾以外位置插入很慢,而list在任意位置插入/删除都较快,所以(a)应使用list更合适. (b)需要头尾插入/删除操作,list和dque都可…
<C++ Primer 4th>读书笔记 顺序容器内的元素按其位置存储和访问.容器类共享公共的接口,每种容器类型提供一组不同的时间和功能折衷方案.通常不需要修改代码,只需改变类型声明,用一种容器类型替代另一种容器类型,就可以优化程序的性能. 标准库定义了三种顺序容器类型:vector.list 和 deque(是双端队列“double-ended queue”的简写,发音为“deck”).它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价.标准库还提供了三种容器适配器(adap…
容器是一种容纳特定类型对象的集合.C++的容器可以分为两类:顺序容器和关联容器.顺序容器的元素排列和元素值大小无关,而是由元素添加到容器中的次序决定的.标准库定义了三种顺序容器的类型:vector.list和deque(双端队列).此外,标准库还提供了三种容器适配器:stack.queue和prioroty_queue类型.适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型.见下表 顺序容器 vector 支持快速随机访问 list 支持快速插入/删除 deque…
以前很少做删除操作,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…
第2章.IoC容器 IoC容器概述 abstract: 介绍IoC和bean的用处和使用 IoC容器处于整个Spring框架中比较核心的位置:Core Container: Beans, Core, Context, SpEL 为上层AOP/Aspects/Instrumentation/Messaging提供支持 IoC容器的用途: 创建对象的依赖,最后组装成所需的业务对象 容器通过业务对象和配置(application-context.xml; xxxController.java)-->生…
C++ Primer 第3章 字符串.向量和数组 C Primer 第3章 字符串向量和数组 1 命名空间的using声明 2 标准库类型string 3 标准库类型vector 4 迭代器介绍 5 数组 定义 访问数组元素 指针和数组 与旧代码的接口 6 多维数组 3.1 命名空间的using声明 using namespace::name; 头文件不应包含using声明 3.2 标准库类型string 使用等号(=)初始化一个变量,实际上执行的是拷贝初始化,编译器把等号右侧的初始值拷贝到新创…
C++提供了使用抽象进行高效编程的方式,标准库中定义了许多容器类以及一系列泛型函数,使程序员可以更加简洁.抽象和有效地编写程序,其中包括:顺序容器,关联容器和泛型算法.本文将简介顺序容器(vector,list和deque)的相关内容. 1.顺序容器的概念 标准库vector类型,就是一种最常见的顺序容器,它将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器.顺序容器的元素排列顺序与其值无关,而仅仅由元素添加到容器里的次序决定. 标准库定义了三种顺序容器:vecto…
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…