首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ set/map insert 未指定位置:插入位置由鍵值決定,非序列容器無「位置」概念

     編輯:程式設計疑難解答

std::set、std::map 為**關聯式容器**,底層紅黑樹依鍵值有序存儲。insert(value) **不接受位置參數**,新元素會依鍵值自動放入正確位置,維持有序性。回傳 pair<iterator,bool> 指向實際插入位置。

程式碼驗證

std::set s = {5, 1, 3};
s.insert(0); // 自動排到最前
s.insert(4); // 自動排在 3 和 5 之間
// s 內部順序永遠為 0,1,3,4,5

序列容器 vs 關聯容器

容器insert 簽名位置參數
vector/list/dequeinsert(pos, val)iterator pos (指定插入點)
set/mapinsert(val)無 (依鍵值自動定位)
set/map (C++11)insert(hint, val)iterator hint (僅作優化提示,不保證插入點)

若需「插入到特定索引」,請用 vector 或 list;若需「自動去重+有序」,用 set;若需「鍵值對+有序」,用 map。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved