C++ Primer 5th笔记(9)chapter9 顺序容器 get insert delete
生活随笔
收集整理的这篇文章主要介绍了
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)c
- 下一篇: C++ Primer 5th笔记(9)c