21xrx.com
2024-12-23 00:12:27 Monday
登录
文章检索 我的文章 写文章
C++中unordered_map的查找操作
2023-06-24 05:51:31 深夜i     --     --
C++ unordered_map 查找操作

在C++中,为了方便地管理不同数据类型的键值对,我们可以使用unordered_map容器。unordered_map是C++11引入的一种关联式容器,使用哈希表实现,能够实现$O(1)$的查找操作。具体的使用方法和std::map类似,但unordered_map存储的元素不是按照键值对的大小排列的。

unordered_map容器定义的语法如下:


std::unordered_map<key_type, mapped_type>;

其中key_type是键的类型,mapped_type是值的类型。unordered_map中的数据存储方式为键值对,可通过以下方式添加数据:


std::unordered_map<int, std::string> mymap;

mymap.insert( "one"); //插入一条数据

mymap[2] = "two"; //插入一条数据

unordered_map容器查找数据时,可以使用以下方式:


std::unordered_map<int, std::string> mymap = { "one", "two", "three", 4};

auto it = mymap.find(2); //查找键为2的值

if (it != mymap.end())

  std::cout << "找到了:" << it->first << " " << it->second << std::endl;

else

  std::cout << "未找到"<< std::endl;

另外,我们还可以使用unordered_map容器的count()函数检查键是否存在。其返回值为0或1,分别表示不存在和存在。


std::unordered_map<int, std::string> mymap = { "one", "two", 3, "four"};

if (mymap.count(2) == 1)

  std::cout << "键为2的元素存在" << std::endl;

else

  std::cout << "键为2的元素不存在" << std::endl;

unordered_map容器在进行查找操作时都是使用哈希表进行查找的。由于哈希表具有键的无序性,所以在查找时无法像map一样使用lower_bound和upper_bound函数。同时也要注意,因为unordered_map容器的键不保证有序,所以在迭代器遍历时元素顺序也不能保证。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复