日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

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

c/c++

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

發布時間:2025/3/21 c/c++ 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。