顺序容器:vector deque list
适配器:根据原始容器类型所提供的操作,通过定义新的操作接口,适应基础的容器类型。
容器元素初始化:
C<T> c; //默认构造函数
C<T>c(n);//n个值初始化,只适用于顺序容器,必须给出默认构造函数
C<T>c(n,t); //n个t 只适用于顺序容器,可以不给,但要给出 T(t)构造函数。
C<T>c(begin,end);//begin,end复制到c中
C<T> c1(c2);//c1和c2是相同的容器类型,存放相同类型元素,c2拷贝给c1
如果想要把不同容器的元素相互赋值,则可用第4个构造函数或用assign。
迭代器的行为像指针。
用作容器类型要遵循2个条件
1.能赋值运算。
2.能复制。
注意:引用类型不能复制和赋值。IO流也不支持复制。
vector deque随机存储
list 链表
注意迭代器失效问题。
difference_type 存储两个迭代器差值的有符号整型,可为负数
value_type 元素类型
reference 元素左值类型,value_type&
const_reference 元素常量左值类型,const value_type&
size_type 无符号整型
const_iterator
reverse_iterator
const_reverse_iterator
时刻更新迭代器,不然会出现迭代器失效问题。
insert都是插在iter的前面。
iterator insert(iter,n); //n插入iter前面,返回新元素的迭代器
void insert(iter,begin,end); //begin end插入iter前面。
void insert(iter,n,t); n个t插入iter前。
如果容器元素支持的比较符,可以让容器整体比较。
如 vector<int> c1,c2; c1==c2;
c.size()
c.max_size();
c.empty();
c.resize(n); //改变c的长度
c.resize(n,t);
reference c.back() ; //得到最后元素的引用
reference c.front(); //得到最前面元素的引用
c.at(n)==c[n];
c.clear();//清空
c.erase(iter); //返回iter后面的元素
c.erase(begin,end);//返回begin,end后面的元素
pop_front()和front()经常一起使用。
iterator find(begin,end,value);//找到value出现的第一个地方。
string 增加的构造函数:cp为空字符结尾的数组
1.string s(cp,n); //cp指向的数组的前n个元素。
2.string s(s2,pos2);//s2中从pos2开始复制给s
3.string s(s2,pos2,len);//s2中从pos2开始复制len个字符给s
string特有函数:
1.s.insert(pos,s2);//pos前插入string对象,,,pos为int
2.s.insert(pos,s2,pos,len);//pos前插入s2从pos开始的len长度
3.s.insert(pos,cp,len);//pos前插入cp的前len个字符
4.s.insert(pos,cp);//pos前插入cp
5.s.assign(s2); //s2赋值给s
6.s.assign(cp,len);//cp的len个字符给s
7.s.assign(cp);//cp赋给s
8.s.erase(pos,len);//删除从pos开始的len长
9.s.substr(pos,n);//返回一个string字符串,包含从pos开始的n个字符。
10.s.substr(pos);//返回string字符串,包含从pos开始的
11.s.substr();//返回s的副本
string中的append 和replace函数,返回s的引用
1.s.append(arg);//将arg插在s的后面。
2.s.replace(pos,len,args);//将args的元素替换 pos开始长为len的字符。
3.s.replace(b,e,args);//args的元素替换b,e 的所有字符
args可为:
1.s2
2.s2,pos,len
3.cp
4.cp,len
5.n,c
6.b2,e2; //迭代器
string提供的查找函数
1.s.find(args);
2.s.rfind(args);
3.s.find_first_of(args);//args中任意字符第一次出现的位置
4.s.find_last_of(args);
5.s.find_first_not_of(args);//查找第一个不属于args的字符
6.s.find_last_not_of(args);//最后一个不属于args的字符
args为:
1.c,pos //从pos开始,查找字符c,默认pos=0
2.s2,pos //pos开始查找string s2 pos默认为0
3.cp,pos //pos开始查找cp(cstring) pos默认为0
4.cp,pos,n //pos开始查找cp所指向的数组的前n个字符
string 的compare函数
1.s.compare(s2);
2.s.compare(pos1,n1,s2); //从pos1开始的n1个字符与s2做比较
3.s.compare(pos1,n1,s2,pos2,n2); //从pos1开始的n1个字符与s2从pos2开始的n2个字符比较
4.s.compare(cp) ;//与char* 比较
5.s.compare(pos1,n1,cp);//从pos1 开始的n1个字符与cp比较
6.s.compare(pos1,n1,cp,n2);//pos1开始的n1个字符与cp的前n2个字符比较。
适配器:容器适配器,迭代器适配器,函数适配器
默认
deque stack和queue
vector priority_queue
当然可以改变关联容器。
如stack<string,vector<string>>
stack的关联容器为顺序容器
queue的关联容器必须支持push_front();
priority_queue 的关联容器必须提供随机访问。
priority_queue设置优先级插入。
分享到:
相关推荐
本文章是关于C++ 中顺序容器的相关内容。
第9 章顺序容器...................................................... 193 练习9.1 练 习9.52 第10章泛型算法..................................................... 234 练习10.1 练 习10.42 目录 ◄ v 第11章...
【原书名】 C++ Primer (4th Edition) 【原出版社】 Addison Wesley/Pearson 【作者】 (美)Stanley B.Lippman,Josée LaJoie,Barbara E.Moo 【译者】 李师贤 蒋爱军 梅晓勇 林瑛 【丛书名】 图灵计算机科学丛书 ...
C++primer 课后题答案 目录 第一章 快速入门 2 第二章 变量和基本类型 7 第三章 标准库类型 13 第四章 数组和指针 21 第五章 表达式 31 第六章 语句 37 第七章 函数 37 第八章 标准IO库 37 第九章 顺序容器 43 第十...
C++Primer第五版 第9章 顺序容器(练习解答)个人总结的文档+源码
此程序是c++ primer 中,第九章有关顺序容器的练习内容。程序为自己编写的模板,感兴趣的朋友可以下载然后自行修改,实现功能
本课程是C++ Primer初级教程,课程内容是学习C++语言基础知识,对应着教材的第1章到第8章。 第1章 快速入门 1.1 编写简单的C++程序 1.2 初窥输入/输出 1.2.1 标准输入与输出对象 1.2.2 一个使用IO库的程序 ...
C++ Primer中文版(第5版)[203M]分3个压缩包 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数...
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.第...
C++ Primer中文版(第5版)[203M]分3个压缩包 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数...
的string 类型一组顺序和关联容器类型比如vector list map 和set 以及在这些类型 上进行操作的一组可扩展的泛型算法generic algorithm 都是这个新标准库的特性本书 不但包括了许多新的资料而且还阐述了怎样在C++中...
c++primer顺序容器与关联容器的一些用法 effective c++ - effective c++笔记归纳 Data Structures and Algorithm Analysis 数据结构与一些算法,来自算法导论,数据结构与算法分析-C语言描述,C Primer Plus, 数据...
第9章 顺序容器 第10章 关联容器 第11章 泛型算法 第三部分 类和数据抽象 第12章 类 第13章 复制控制 第14章 重载操作符与转换 第四部分 面向对象编程与泛型编程 第15章 面向对象...
顺序容器,它将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。标准库里定义了三种类型:vector(支持快速随机访问)、list(支持快速插入、删除)、deque(双端队列)容器只定义了...
大多数C++教材按照语言进化的顺序来组织其内容。首先讲授C++的C子集,然后将C++的更为抽象的一些特性作为高级话题在书的最后进行介绍。这种方式存在两个问题:读者会陷入那些继承自低级程序设计的细节,从而由于...
第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 第十章 关联容器 ..............
C++primer5笔记代码资料 STL 源码剖析 再硬核|5 千字长文+ 30 张图解 | 陪你手撕 STL 空间配置器源码 硬核|万字长文炸裂!手撕 STL 迭代器源码与 traits 编程技法 超硬核 | 2 万字+20 图带你手撕 STL 序列式容器源码...
多数C++教材按照下面的顺序展开:先讲低级细节,再介绍更高级的语言特征;在讲完整个语言后才开始解释标准库。结果往往使读者纠缠于低级的程序设计问题和复杂类型定义的编写等细节,而不能真正领会抽象编程的力量。...