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相关推荐

  1. C++ Primer 5th笔记(9)chapter9 顺序容器 vector 容器的自增长 容器适配器

    1. vector 容器的自增长:当插入元素当存储空间不足时,vector 必须重新分配存储空间(比如将新空间大小增加为当前大小的2倍) 管理容量的成员函数 操作 定义 c.shrink_to_fit ...

  2. 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 ...

  3. C++ Primer 5th笔记(chap 11)关联容器

    •map •multimap •set •multiset •set •unordered_map •unordered_set •unordered_multimap •unordered_mult ...

  4. C++primer十万字笔记 第九章 顺序容器

    顺序容器   容器就是特定类型对象的集合,顺序容器为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应.标准库提供了三种容器类型. 顺序容器概述  标 ...

  5. C++ primer 5th笔记

    目录2022年11月25日 周五 阴 第一.二章:变量和基本类型 基本内置类型 unsigned float与double 'A'与"A" 布尔类型转换时 初始化与赋值 初始化 声 ...

  6. C++ Primer 5th笔记(9)chapter9 顺序容器

    1. 定义:元素按位置进行存储和访问.元素的排列次序与元素值无关,而是由元素添加到容器的次序决定的. 容器类型 定义 优点 缺点 string 可变大小数组 支持快速随机访问 在尾部之外的位置插入或删 ...

  7. C++ Primer 5th笔记(9)chapter9 顺序容器 string

    1. string构造 string s; 定义一个新的空string对象,命名为s string s(cp); 定义一个新的string对象,用cp所指向的(以空字符null结束的)C风格字符串初始 ...

  8. C++ Primer 5th笔记(9)chapter9 顺序容器 forward_list

    1. 特殊的forward_list 单向链表的删除操作,真正删除的是某个元素后面的值(想想是为什么?) 操作 定义 lst.before_begin() 返回指向链表首元素之前不存在的元素的迭代器, ...

  9. C++ Primer 5th笔记(chap 11)关联容器---无序容器

    无序关联容器 unordered associative container •unordered_map •unordered_set •unordered_multimap •unordered_ ...

最新文章

  1. 不是变量 win10_在win10下安装manim
  2. shell编程 case语句
  3. go语言代码规范详解
  4. android 回归测试,自动遍历回归测试工具
  5. c 数组上限_高级I/O复用技术:Epoll的使用及一个完整的C实例含代码
  6. django之get filter
  7. 贝叶斯集锦:MCMCpack包
  8. No package ‘libmate-menu‘ found
  9. 算法设计与分析 第一章 基础知识作业1
  10. python为什么被称为胶水语言_为什么说python是胶水语言
  11. 利用selenium webdriver下载不同类型的文件(pdf,txt等等)
  12. Pvr_ControllerModuleInit代码分析
  13. Windows文件搜索软件Everything
  14. Python 实现 PDF转图片 图片转PDF
  15. vue数据传递--父传子-方法传递
  16. CVPR读书笔记[5]:Gabor特征提取之Gabor核的实现
  17. flex 底部固定_div 底部固定方法(不用position定位)
  18. 【实施】项目实施工程中的确认事项
  19. 问卷调查+需求分析(部分)
  20. java走马灯_用java编写的一个简单走马灯程序

热门文章

  1. WARN [com.mchange.v2.async.ThreadPoolAsynchronousRunner] - com.mchange.v2.as
  2. html after 只能应用于p标签吗,css after是什么意思?
  3. hive通过外表把数据存到mysql中_hive数据去重
  4. 怎样用springboot开发cs_springboot开发之配置自定义的错误界面和错误信息
  5. 如何成为一名数据中心运维工程师?
  6. 微型数据中心正在向边缘发展
  7. 数据中心更新那么快,运维人如何度过35岁危机?
  8. Dataset:Big Mart Sales数据集的简介、下载、案例应用之详细攻略
  9. DL之DNN:利用MultiLayerNetExtend模型【6*100+ReLU+SGD,dropout】对Mnist数据集训练来抑制过拟合
  10. ML之LoR:kaggle比赛之利用泰坦尼克号数据集建立LoR模型对每个人进行获救是否预测