C++ Primer 5th笔记(9)chapter9 顺序容器 get insert delete
insert、delete需要解决两个问题:
- 在什么位置插入?
- 返回什么位置?
1. 访问对象
操作 | 定义 |
---|---|
c.back(); | 返回c中尾元素的引用, 若c为空, 函数行为未定义. |
c.front(); | 返回c中首元素的引用, 若c为空, 函数行为未定义. |
c[n]; | 返回c中下标为n的元素的引用, 若n>=c.size(), 函数行为未定义. |
c.at(n); | 返回c中下标为n的元素的引用, 若下标越界, 抛出一个out_of_range异常. |
注意:
- 使用之前先判断是否是empty
- 访问成员函数返回的都是引用, 可以用来改变元素的值.
- at和下标操作只适用于string/vector/deque和array,如果at下标越界,会抛出out_of_range异常
- back不适用于forward_list
2. insert
- 将一个对象插入到容器中,实际上放入到容器中的是一个copy副本
操作 | 定义 |
---|---|
c.push_back(t); | |
c.emplace_back(args); | |
c.push_front(t); | |
c.emplace_front(args); | |
c.insert(p, t); | 在迭代器p指向的元素之前创建一个值为t或有args创建的元素, 返回指向新添加元素的迭代器. |
c.emplace(p, args); | |
c.insert(p, n, t); | 在迭代器p指向的元素之前插入n个值为t的元素, 返回指向新添加的第一个元素的迭代器. |
c.insert(p, b, e); | 将迭代器b和e之间的元素插入到迭代器p指向的元素之前, b和e不能指向c自己 返回指向新添加的第一个元素的迭代器. 若范围为空, 则返回p. |
c.insert(p, il); | il是一个花括号包围的元素值列表, 将这些给定的定值插入到迭代器p指向的元素之前. 返回指向新添加的第一个元素的迭代器. 若范围为空, 则返回p |
- insert. vector, deque,list,string支持insert,forward_list有自己的insert
- emplace_back 使用参数直接构造对象
3. delete
操作 | 定义 |
---|---|
c.pop_back(); | 删除c中尾元素, |
c.pop_front(); | 删除c中首元素 |
c.erase(); | 删除迭代器p所指定的元素, |
c.erase(b, e); | 删除迭代器b和e之间的元素, 返回最后一个被删元素之后元素的迭代器. 若e本身是尾后迭代器, 则函数也返回尾后迭代器. |
c.clear(); | 删除c中的所有元素, 返回void. |
c.erase§ | 删除迭代器p所指向的元素 如果p本身就是指向超出末端的下一位置的迭代器,则该函数未定义 |
c.erase(b, e) | 删除迭代器b和e所标记的范围内的所有元素. 如果e本身就是指向超出末端的下一位置的迭代器,则返回的迭代器也指向容器的超出末端的下一位置 |
c.pop_front() | 删除容器c的第一个元素。返回void。 |
返回一个迭代器,它指向被删除元素段后面的元素
若c为空, 函数行为为定义. 返回void.
forward_list有特殊版本的erase,且不支持pop_back
pop_front只适用于list和deque容器,vector和string不支持
C++ Primer 5th笔记(9)chapter9 顺序容器 get insert delete相关推荐
- C++ Primer 5th笔记(9)chapter9 顺序容器 vector 容器的自增长 容器适配器
1. vector 容器的自增长:当插入元素当存储空间不足时,vector 必须重新分配存储空间(比如将新空间大小增加为当前大小的2倍) 管理容量的成员函数 操作 定义 c.shrink_to_fit ...
- C++ Primer 5th笔记(9)chapter9 顺序容器 构造和赋值
1. 容器对象的构造和赋值 1.1 构造 C c; C c; //默认构造函数 C c1(c2) C c1=c2; C c{a,b,c,-} C c={a,b,c,-} C c(b,e)//eg. l ...
- C++ Primer 5th笔记(chap 11)关联容器
•map •multimap •set •multiset •set •unordered_map •unordered_set •unordered_multimap •unordered_mult ...
- C++primer十万字笔记 第九章 顺序容器
顺序容器 容器就是特定类型对象的集合,顺序容器为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应.标准库提供了三种容器类型. 顺序容器概述 标 ...
- C++ primer 5th笔记
目录2022年11月25日 周五 阴 第一.二章:变量和基本类型 基本内置类型 unsigned float与double 'A'与"A" 布尔类型转换时 初始化与赋值 初始化 声 ...
- C++ Primer 5th笔记(9)chapter9 顺序容器
1. 定义:元素按位置进行存储和访问.元素的排列次序与元素值无关,而是由元素添加到容器的次序决定的. 容器类型 定义 优点 缺点 string 可变大小数组 支持快速随机访问 在尾部之外的位置插入或删 ...
- C++ Primer 5th笔记(9)chapter9 顺序容器 string
1. string构造 string s; 定义一个新的空string对象,命名为s string s(cp); 定义一个新的string对象,用cp所指向的(以空字符null结束的)C风格字符串初始 ...
- C++ Primer 5th笔记(9)chapter9 顺序容器 forward_list
1. 特殊的forward_list 单向链表的删除操作,真正删除的是某个元素后面的值(想想是为什么?) 操作 定义 lst.before_begin() 返回指向链表首元素之前不存在的元素的迭代器, ...
- C++ Primer 5th笔记(chap 11)关联容器---无序容器
无序关联容器 unordered associative container •unordered_map •unordered_set •unordered_multimap •unordered_ ...
最新文章
- 不是变量 win10_在win10下安装manim
- shell编程 case语句
- go语言代码规范详解
- android 回归测试,自动遍历回归测试工具
- c 数组上限_高级I/O复用技术:Epoll的使用及一个完整的C实例含代码
- django之get filter
- 贝叶斯集锦:MCMCpack包
- No package ‘libmate-menu‘ found
- 算法设计与分析 第一章 基础知识作业1
- python为什么被称为胶水语言_为什么说python是胶水语言
- 利用selenium webdriver下载不同类型的文件(pdf,txt等等)
- Pvr_ControllerModuleInit代码分析
- Windows文件搜索软件Everything
- Python 实现 PDF转图片 图片转PDF
- vue数据传递--父传子-方法传递
- CVPR读书笔记[5]:Gabor特征提取之Gabor核的实现
- flex 底部固定_div 底部固定方法(不用position定位)
- 【实施】项目实施工程中的确认事项
- 问卷调查+需求分析(部分)
- java走马灯_用java编写的一个简单走马灯程序
热门文章
- WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner] - com.mchange.v2.as
- html after 只能应用于p标签吗,css after是什么意思?
- hive通过外表把数据存到mysql中_hive数据去重
- 怎样用springboot开发cs_springboot开发之配置自定义的错误界面和错误信息
- 如何成为一名数据中心运维工程师?
- 微型数据中心正在向边缘发展
- 数据中心更新那么快,运维人如何度过35岁危机?
- Dataset:Big Mart Sales数据集的简介、下载、案例应用之详细攻略
- DL之DNN:利用MultiLayerNetExtend模型【6*100+ReLU+SGD,dropout】对Mnist数据集训练来抑制过拟合
- ML之LoR:kaggle比赛之利用泰坦尼克号数据集建立LoR模型对每个人进行获救是否预测