簡體   English   中英

使用迭代器訪問地圖特定鍵的最有效方法?

[英]Most efficient way to access specific key of a map with an iterator?

我有一個std::map<std::string,int> ,我想從中訪問帶有來自字符串值的迭代器的特定元素。 我編寫了以下代碼來完成它。

map<string,int> mymap;
map<string,int>::iterator it=mymap.begin();

string find="Node";
        while( (it->first) !=find && it!= mymap.end())
               it++;

遍歷地圖的整個關鍵元素是最有效的方法嗎?

map<string,int>::iterator it = mymap.find("Node");

就這樣。

map 只是一個二叉搜索樹。 可以在O(log(N))時間內找到給定的鍵。 遍歷整個列表將花費O(N)時間。

如果你想要一個迭代器,使用 map 的find方法。 如果您想引用數據,只需使用operator[] 這兩個都將在O(log(N))時間內運行。

如果要在地圖上查找元素,請使用find成員方法。 映射是針對此類操作優化的關聯容器,無需遍歷鍵。

為什么不直接使用地圖的“查找”功能?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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