使用迭代器访问地图特定键的最有效方法?

时间:2014-05-31 19:12:44

标签: c++ map iterator key

我有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++;

循环遍历地图的整个关键元素是最有效的方法吗?

4 个答案:

答案 0 :(得分:2)

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

That's all.

答案 1 :(得分:1)

如果要在地图上查找元素,请使用find成员方法。 映射是为此类操作优化的关联容器,无需循环键。

答案 2 :(得分:1)

为什么不使用map的“find”功能?

答案 3 :(得分:1)

map只是一个二叉搜索树。可以在O(log(N))时间找到给定的密钥。迭代整个列表将花费O(N)时间。

如果需要迭代器,请使用map的find方法。如果您想要引用数据,只需使用operator[]即可。这两个都将在O(log(N))时间内运行。