欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++ Primer 5th笔记(9)chapter9 顺序容器 get insert delete

发布时间:2025/3/21 c/c++ 24 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。