簡體   English   中英

如何插入 std::map?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM