使用迭代器访问映射的特定键的最有效方法

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

本文关键字:有效 方法 迭代器 访问 映射      更新时间:2023-10-16

我有一个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");

仅此而已。

映射只是一个二进制搜索树。给定的密钥可以在O(log(N))时间内找到。遍历整个列表需要O(N)时间。

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

如果要在映射上查找元素,请使用findmember方法。映射是为这种类型的操作优化的关联容器,不需要在键上循环。

为什么不直接使用map的"find"函数?