[英]How to insert into std::map?
是否有 std 迭代器可用於使用 std 算法(例如 std::copy)將元素插入到 std::map 中?
我需要一個容器來將一個對象鏈接到一個字符串,並且我考慮過使用 std::map。 有沒有更好的容器? 忘了說 - 項目需要排序。
我認為 OP 正在尋找的是std::inserter(mymap, mymap.end())
所以你可以這樣做:
std::copy( inp.begin(), inp.end(), std::inserter(mymap, mymap.end()) );
輸入類型必須是您的地圖采用的對類型,否則您的算法將需要使用函數/函子進行std::transform
才能將輸入類型轉換為這樣的std::pair
。
std::insert_iterator
實際上不是一個迭代器,而是一個生成迭代器的模板化函數( std::insert_iterator
,它是一個模板化類型,但該類型在函數調用中自動解析)。
為了插入std::map
你需要使用std::make_pair()
。
例如:
std::map<int,std::string> Map;
Map.insert(std::make_pair(5,"Hello"));
嘗試類似的東西。 :)
是的,如果您使用std::insert_iterator
作為 OutputIterator(使用輔助函數std::inserter
inserter 來創建這些;這樣,可以推斷模板類型),則std::copy
可以將多個元素插入到映射中。 std::map 的“元素”是鍵值對,您可以使用std::make_pair
創建,如 Prasoon 所示。 (實際類型是std::pair<Key, Value>
;同樣,輔助函數允許模板類型推導。)如果您有一個序列中的鍵和另一個序列中的值,您應該能夠使用std::transform
以生成一系列鍵值對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.