21xrx.com
2024-11-05 18:36:47 Tuesday
登录
文章检索 我的文章 写文章
C++无序集合 (unordered_set)
2023-06-25 08:59:08 深夜i     --     --
C++ 无序集合 unordered_set 数据结构 哈希表

C++中的unordered_set是一种存储无序唯一元素的容器。它的主要特点是使用哈希表实现,因此查找和插入的操作复杂度为常数级别。相对于传统的set容器,unordered_set的效率更高,适合处理大量数据。

unordered_set的使用方法与set类似,但需要注意一些细节。首先,unordered_set不会对元素进行排序,因此无法通过迭代器按照顺序访问元素。其次,unordered_set中元素的类型必须支持哈希操作,通常需要自定义哈希函数。最后,插入元素时要注意避免重复插入,可以利用insert函数返回的pair类型来判断是否插入成功。

下面是一个示例代码,演示了如何定义和使用unordered_set:


#include <unordered_set>

#include <iostream>

int main() {

  std::unordered_set<int> myset = 5;

  myset.insert(11);

  std::cout << "myset contains:";

  for (auto i : myset)

    std::cout << " " << i;

  

  std::cout << "\nsize = " << myset.size() << std::endl;

  return 0;

}

输出结果为:


myset contains: 9 5 1 3 11 7

size = 6

可以看到,unordered_set中的元素并没有按照插入的顺序排列,而是根据哈希值进行了分组。此外,插入11成功,但再次插入11则无效。

总的来说,unordered_set是一个高效的、无序的、不可重复的容器,适用于对大量无序数据进行快速查找和插入等操作。然而,在使用时需要注意一些细节,特别是对哈希函数的定义。

  
  

评论区

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