我有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++;
循环遍历地图的整个关键元素是最有效的方法吗?
答案 0 :(得分:2)
map<string,int>::iterator it = mymap.find("Node");
答案 1 :(得分:1)
如果要在地图上查找元素,请使用find成员方法。 映射是为此类操作优化的关联容器,无需循环键。
答案 2 :(得分:1)
为什么不使用map的“find”功能?
答案 3 :(得分:1)
map只是一个二叉搜索树。可以在O(log(N))
时间找到给定的密钥。迭代整个列表将花费O(N)
时间。
如果需要迭代器,请使用map的find
方法。如果您想要引用数据,只需使用operator[]
即可。这两个都将在O(log(N))
时间内运行。