c++11の顺序容器】的更多相关文章

  容器是一种容纳特定类型对象的集合.C++的容器可以分为两类:顺序容器和关联容器.顺序容器的元素排列和元素值大小无关,而是由元素添加到容器中的次序决定的.标准库定义了三种顺序容器的类型:vector.list和deque(双端队列).此外,标准库还提供了三种容器适配器:stack.queue和prioroty_queue类型.适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型.见下表 顺序容器 vector 支持快速随机访问 list 支持快速插入/删除 deq…
0.前言 本文简单地总结了STL的顺序容器的知识点.文中并不涉及具体的实现技巧,对于细节的东西也没有提及.一来不同的标准库有着不同的实现,二来关于具体实现<STL源码剖析>已经展示得全面细致.所以本文仅仅是对容器基础知识的归纳.至于容器提供的接口与使用实例,建议查取官方文档.文章难免有错漏,希望指出. 1.容器概论 容器,置物之所也.像桶可装水,碗可盛汤,C++的容器,可以存储对象.容器有多种,用来处理不同的元素操作诉求.按照元素存储到容器中以及访问方式的差异,容器分为顺序容器与关联容器.顺序…
练习9.1:对于下面的程序任务,vector.deque和list哪种容器最为适合?解释你的选择的理由.如果没有哪一种容器优于其他容器,也请解释理由.(a) 读取固定数量的单词,将它们按字典序插入到容器中.我们将在下一章中看到,关联容器更适合这个问题.(b) 读取未知数量的单词,总是将单词插入到末尾.删除操作在头部进行.(c) 从一个文件读取未知数量的整数.将这些数排序,然后将它们打印到标准输出.(a)应该使用array,因为单词的数量是固定的,也就是说元素的个数是固定的,因此符合array的特…
c/c++ 标准顺序容器 之 push_back,push_front,insert,emplace 操作 关键概念:向容器添加元素时,添加的是元素的拷贝,而不是对象本身.随后对容器中元素的任何改变都不会影响到原始对象,反之亦然. 关键警告:因为vector,deque,string的内存存储都是在连续的空间上,所以向vector,deque,string的头尾以外的位置插入元素或者删除元素,会产生元素的移动,就会非常耗时,这时就应该考虑使用双向链表list,但是list不支持下标操作 知识点…
1.标准库中定义了一些顺序容器,所有顺序容器都提供了快速顺序访问元素的能力. 2.如果容器的元素类型没有默认构造函数,那么在构造这个容器的时候不能只指定这个容器的数目,因为没有办法默认构造这些元素. 3.常见的一些容器操作 4.当一个容器初始化另一个容器拷贝时,两个容器的元素类型必须完全匹配,如果用一个容器的迭代器去初始化另一个容器时,只要元素类型可以转换即可. 5.当定义一个array时除了指定类型之外还要定义它的大小,array可以进行拷贝赋值. std::array<> arr = {,…
c++11 List 容器 List简介 list是一个双向链表容器        可高效地进行插入删除元素.         list不可以随机存取元素,所以不支持at(pos)函数与[]操作符.         #include <list> list对象的默认构造 list采用采用模板类实现         对象的默认构造形式:          list<T> lstT 示例:          list<int> lstInt; //定义一个存放int的lis…
PS:删除元素的成员函数并不检查其参数.在删除元素之前,程序员必须确保它们是存在的. 1.迭代器的范围是[begin,end)左闭右开. 2.对构成迭代器的要求: ①它们指向同一个容器中的元素或者容器的最后一个元素之后的位置. ②end不在begin之前. 3.当将一个容器初始化为另一个容器的拷贝的时候,两个容器的容器类型和元素类型都必须相同.但是,当传递迭代器参数来拷贝一个范围的时候,新容器和原容器中的元素类型也可以不同,只要能将要拷贝的元素转换为要初始化的容器的元素类型就可以了. 4.为了使…
容器分为顺序容器与关联容器,顺序容器也称为序列式容器.序列式容器按元素插入的顺序存储元素,这些元素可以进行排序,但未必是有序的.C++本身内置了一个序列式容器array(数组),STL另外提供了vector,list,forward_list,deque,stack,queue,priority-queue,string等等序列式容器.所有的容器都是基于模板实现的,因为容器必须保证能装得下各种各样的类型.其中,stack,queue都是基于deque来实现的,priority-queue基于he…
顺序容器概述 顺序容器的类型有: 类型 说明 vector 可变长度数组. 支持快速随机访问. deque 双端队列. 支持快速随机访问. list 双向链表. 只支持双向顺序访问. forward_list 单向链表. 只支持单向顺序访问. array 固定大小数组. string 与vector相似的容器, 专门用于保存字符串. string和vector将元素保存在连续的内存空间中, 因而支持随机访问. list和forward_list是链表的数据结构, 在容器的任何位置添加和删除元素都…
以前很少做删除操作,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…