读书笔记《C++ Primer》第五版——第九章 顺序容器
2017-11-18 21:11
274 查看
容器定义和初始化
主要形式有形式 | 备注 |
---|---|
C c | Array要在C中指定固定大小 |
C c1(c2) C c1=c2 | c1和c2必须是相同类型,对于array还要相同大小 |
C c{a,b,c…} C c={a,b,c…} | 列表中元素类型要与C的元素类型相容,对于array,列表元素数目要小于等于array的大小 |
C c(b,e) | 迭代器中C中元素相容,array不适用 |
注意 | 只有顺序容器(array除外)的构造函数才能接受大小参数 |
C seq(n) | 构造函数为explicit,string不适用 |
C seq(n,t) | seq包含n个初始值为t的元素 |
容器赋值运算
主要形式有形式 | 备注 |
---|---|
c1=c2 | c1和c2必须具有相同的类型 |
c={a,b,c….} | arrary不适用 |
swap(c1,c2) c1.swap(c2) | swap比从c2向c1拷贝元素要快得多,且不会使指向容器的迭代器、引用、指针失效(array、string除外) |
注意 | assign不适用于关联容器和array |
seq.assign(b,e) | 迭代器b、e不能指向seq中的元素 |
seq.assign(il) | il为初始化列表 |
seq.assign(n,t) | n个值为t的元素 |
顺序容器添加元素
arrary不支持这些操作forward_list有自己专有版本的insert和emplace
forward_list不支持push_back和emplace_back
vector和string不支持push_front和emplace_front
主要形式有
形式 | 备注 |
---|---|
c.push_back(t) c.emplace_back(args) | 返回void |
c.push_front(t) c.emplace_front(args) | 返回void |
c.insert(p,t) c.emplace(p,args) | 返回新增元素的迭代器 |
c.insert(p,n,t) c.insert(p,b,e) c.insert(p,il) | 返回新增第一个元素的迭代器;若n为0,返回p |
顺序容器访问元素
at和下标操作只适用于string、vector、deque和array主要形式有
形式 | 备注 |
---|---|
c.back() | c为空则行为未定义,forward_list不支持 |
c.front() | c为空则行为未定义 |
c | 若n>=c.size(),行为未定义 |
c.at(n) | 若下表越界,抛出out_of_range异常 |
forward_list中插入和删除元素的操作
形式 | 备注 |
---|---|
lst.before_begin() lst.cbefore_begin() | 返回首元素前的迭代器,不可解引用 |
lst.insert_after(p,t) lst.insert_after(p,n,t) lst.insert_after(p,b,e) lst.insert_after(p,il) | 返回最后一个插入元素的迭代器,范围为空时行为未定义 |
emplace_after(p,args) | 返回新增元素的迭代器,p为尾后迭代器时行为未定义 |
lst.erase_after(p) lst.erase_after(b,e) | 删除(p,end)或(b,e)区间,返回被删元素之后元素的迭代器,未删除时返回尾后迭代器。如果p指向尾元素或尾后迭代器,行为未定义 |
顺序容器resize操作
形式 | 备注 |
---|---|
c.resize(n) | n |
c.resize(n,t) | 任何新增元素都初始化为t |
容器大小管理操作
形式 | 备注 |
---|---|
c.shrink_to_fit() | capacit减少为size相同大小(不保证)//C++11 |
c.capacity() | 不重新分配内存时c可保存多少元素 |
c.reserve(n) | 分配至少容纳n个元素的内存空间 |
string的其他方法
构造方法主要有:
string s(cp,n)string s(s2,pos)
string s(s2,pos2,len2)
修改string的操作
函数 | 备注 |
---|---|
s.insert(pos,args) | pos为迭代器时分别返回第一个插入字符串的迭代器,为下表时返回s的引用 |
s.erase(pos,len) s.assign(args) s.append(args) | 返回s的引用 |
s.replace(range,args) | rang为下标和长度,或者一对s的迭代器,返回s的引用 |
string搜索操作
s.find(args)、s.rfind(args)查找args整体出现位置s.find_first_of(args)、s.find_last_of(args)、s.find_first_not_of(args)、s.find_last_not_of(args)查找args任一字符出现或不出现的位置
args可以为c,pos、s2,pos、cp,pos、cp,pos,n
s.compare的几种参数形式
s2 pos,n1,s2 pos,n1,s2,pos2,n2 cp pos1,n1,cp pos1,n1,cp,n2stirng和数值之间的转换C++11
函数 | 备注 |
---|---|
to_string(val) | |
stoi(s,p,b) stol(s,p,b) stoul(s,p,b) stoll(s,p,b) stoull(s,p,b) | size_t指针p保存s中第一个非数值字符的下标,p默认为0,基数b默认为10 |
stof(s,p) stod(s,p) stold(d,p) | ld指的是long double |
容器适配器
A aA a(type, C)
a.empty
a.size()
swap(a,b) a.swap(b) a和b必须有相同类型,包括底层容器也须相同
相关文章推荐
- C++ primer 读书笔记 第九章 顺序容器
- c++ primer(第五版)学习笔记及习题答案代码版(第九章)顺序容器
- 《C++ Primer》读书笔记第九章-2-顺序容器操作 And vector增长问题
- 《C++ Primer》读书笔记-第九章 01 顺序容器
- c++ primer(第五版)笔记 第九章 顺序容器(2)
- c++ primer(第五版)笔记 第九章 顺序容器(4)
- c++ primer(第五版)笔记 第九章 顺序容器(3)
- c++ primer 读书笔记 第九章 顺序容器有那些 vector list deque stack queue priority-queue
- 《C++ Primer》读书笔记-第九章 03 顺序容器操作
- 《C++ Primer》读书笔记——第九章_顺序容器
- c++ primer(第五版)笔记 第九章 顺序容器(1)
- 《C++ Primer》读书笔记第九章-1- 顺序容器概述 And 容器库概览
- 实验测试1《C++ Primer》第五版——第九章 顺序容器
- 实验测试2《C++ Primer》第五版——第九章 顺序容器
- C++ Primer 第九章 顺序容器
- C++ Primer 【第四版】第九章 顺序容器
- 《C++ Primer 4th》读书笔记 第9章-顺序容器
- 《C++ Primer》第九章 顺序容器
- 《C++ Primer》读书笔记-第九章 06 容器适配器
- 顺序容器 - 3【C++ Primer 学习笔记 - 第九章】