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