C++ Primer 第九章 顺序容器
由于书籍上写的已经很经典了,故大部分用图片的形式来阐述概念,代码纯手打进行验证。
1.顺序容器类型:vector、deque、list、forword_list、array、string。
2.顺序容器概述:

3.小结

4. 验证代码如下:
#include <iostream>
#include <vector>
#include <array>
#include <string>
#include <list>
using namespace std; int main()
{
//vector <int> Vec = {0,1,2,3,4,5,6,7,8,9};//vs2010 显示此初始化错误,但书中正确;
vector <int> Vec(,);
cout<<"vector元素:"<< Vec[] <<endl; //标准库array具有固定大小
array <int,> Arr = {,,,,,,,,,};//array容器必须指定大小;
array <int,> Arr1 = {};//Arr1的元素为12,0,0,...,0;
Arr = Arr1;//将Arr元素替换为Arr1,两者必须类型相同;
Arr.swap(Arr1);//一定程度上,同上式功能,swap为交换成员,交换两者元素;
swap(Arr,Arr1);//交换两者元素,速度比拷贝快得多; //swap操作交换必须为两个相同类型容器的内容,大小无关;
//下面交换说明为:交换后svec1为有24个元素的string类型的容器;
//svec2为10个的string类型的容器;
vector<string> svec1();
vector<string> svec2();
swap(svec1,svec2); //添加元素
//采用array和forward_list之外,每个顺序容器(包括string类型)都支持push_back
//下面每次读取一个string到word中,然后追加到容器尾部
string word;
while(cin >> word)
svec1.push_back(word); //push_front 此操作将元素插入到容器头部 vector不支持
list <int> ilist;
// 将元素添加到ilist的开头,将0,1,2,3添加到ilist开头
for (int i = ; i!= ;++i)
ilist.push_front(i); // 在容器中的特定位置添加元素 使用insert
//值得一提的是 insert是插入到指定位置之前的位置处
vector<string> svec;
list <string> slist;
//等价于调用slist.push_front("Hello")
slist.insert(slist.begin(),"Hello");
//vector不支持push_front 用insert实现
svec.insert(svec.begin(),"Hello");
//还可插入多个值 插入10个“a”
svec.insert(svec.end(),,"a"); //在容器中访问元素的成员函数:front back 下标和at
//删除元素 erase 以及pop_back()删除尾元素 pop_front()删除首元素 //改变容器大小resize srray不支持resize 因为其初始化时大小固定
list<int>ilist1(,);// 定义10个int类型数据 都为42
ilist1.resize();// 将5个值为0的元素添加到ilist的末尾
ilist1.resize(,-);// 将10个值为-1的元素添加到ilist的末尾
ilist1.resize();// 从ilist末尾删除20个元素 system("pause");
return ;
}
C++ Primer 第九章 顺序容器的更多相关文章
- C++ Primer : 第九章 : 顺序容器的操作以及迭代器失效问题
顺序容器的添加.访问.删除操作以及forward_list的特殊操作,还有迭代器失效问题. 一.向容器添加元素 // array不支持这些操作 // forward_list有自己撰于的版本的inse ...
- C++ Primer : 第九章 : 顺序容器的定义、迭代器以及赋值与swap
顺序容器属于C++ STL的一部分,也是非常重要的一部分. 顺序容器包括: std::vector,包含在头文件<vector>中 std::string, 包含在头文件<strin ...
- C++ Primer 读书笔记: 第9章 顺序容器
第9章 顺序容器 引: 顺序容器: vector 支持快速随机访问 list 支持快速插入/删除 deque 双端队列 顺序容器适配器: stack 后进先出栈 queue 先进先出队列 priori ...
- C++ Primer : 第九章 : vector变长、string的其他操作以及容器适配器
vector变长机制.string的其他构造方法,添加.替换和搜索操作,string比较和数值转换,最后是容器适配器. vector对象是如何增长的 vector和string类型提供了一些成员函数, ...
- C++ Primer 5th 第9章 顺序容器
练习9.1:对于下面的程序任务,vector.deque和list哪种容器最为适合?解释你的选择的理由.如果没有哪一种容器优于其他容器,也请解释理由.(a) 读取固定数量的单词,将它们按字典序插入到容 ...
- [C++ Primer] 第9章: 顺序容器
顺序容器概述 顺序容器的类型有: 类型 说明 vector 可变长度数组. 支持快速随机访问. deque 双端队列. 支持快速随机访问. list 双向链表. 只支持双向顺序访问. forward_ ...
- 《C++ Primer》笔记 第9章 顺序容器
顺序容器类型 类型 解释 vector 可变大小数组.支持快速随机访问.在尾部之外的位置插入或删除元素可能很慢 deque 双端队列.支持快速随机访问.在头尾位置插入.删除速度很快 list 双向链表 ...
- 【c++ Prime 学习笔记】第9章 顺序容器
一个容器是特定类型对象的集合 顺序容器中元素的顺序与其加入容器的位置对应 关联容器中元素的顺序由其关联的关键字决定,关联容器分为有序关联容器和无序关联容器 所有容器类共享公有接口,不同容器按不同方式扩 ...
- C++ Primer 有感(顺序容器)
1.顺序容器的元素排列次序与元素的值无关,而是由元素添加到容器里的次序决定. 2. 顺序容器 vector 支持快速随机访问 list ...
随机推荐
- OceanBase架构浅析(一)
http://www.cnblogs.com/LiJianBlog/p/4779934.html 简介 OceanBase是阿里集团研发的可扩展的关系数据库,实现了数千亿条记录.数百TB数据上的跨行跨 ...
- Python开发【第六章】:Python面向对象
编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种 ...
- IAP的几个问题
IAP是(In-APP Purchase),苹果商店内购.先来看看它的流程: 而实际运营过程中,经常会遇到这二个问题: 只要应用玩的人比较多,基本上都会遇到过此类问题,下面是来自搜索引擎的结果: ...
- 关于Js添加版本号
背景 在搜索引擎中搜索关键字.htaccess 缓存,你可以搜索到很多关于设置网站文件缓存的教程,通过设置可以将css.js等不太经常更新的文件缓存在浏览器端,这样访客每次访问你的网站的时候,浏览器就 ...
- RDIFramework.NET(.NET快速开发框架) 答客户问(2014-02-23)
1.框架的部署安装,服务器端和客户端 答:开发版以上版本支持SOA模式,也即真正的面向服务端的模式,在实际使用过程中,可根据项目的实际需要,来选择性的进行部署(直连模式或SOA模式),如需要分布式应用 ...
- SpringMVC源码剖析(一)- 从抽象和接口说起
SpringMVC作为Struts2之后异军突起的一个表现层框架,正越来越流行,相信javaee的开发者们就算没使用过SpringMVC,也应该对其略有耳闻.我试图通过对SpringMVC的设计思想和 ...
- spring设置webAppRootKey
今天一个同事来问webAppRootKey 在哪设置的 <context-param> <param-name>webAppRootKey</param-name> ...
- 第一次尝试编写java
昨晚手贱,不小心把环境变量path里面都东西全删除了 然后上百度搜了一波又一波 最后还是复制达达的 感动 然后还是不行,最后发现错误竟然是分号用了汉字的分号而不是英文的分号 这个问题在编写C语言也出现 ...
- 列间距column-gap
column-gap主要用来设置列与列之间的间距,其语法规则如下: column-gap: normal || <length> 取值说明 属性值 属性值说明 normal 默认值,默值为 ...
- echo(),print(),print_r(),var_dump的区别?
常见的输出语句 echo()可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用. print()函 ...