21xrx.com
2024-12-22 21:47:25 Sunday
登录
文章检索 我的文章 写文章
C++无序集合(Set)
2023-06-22 16:09:35 深夜i     --     --
C++ 无序集合 Set 数据结构 STL

C++是一种流行的编程语言,也是许多开发人员选择的首选语言。这一点在大量的C++编程库中表现出来,其中一个非常有用的是std::set。std::set是一个有序集合,可以对一组不同的元素进行唯一的插入,这意味着每个元素只出现一次。

然而,有时候我们需要一个无序的集合,这种集合称为Set。与std::set不同,std::unordered_set使用哈希表实现,因此元素的顺序是随机的。虽然这个集合不是有序的,但由于哈希表的实现方式,std::unordered_set比std::set更快。

以下是一个使用std::unordered_set的例子:


#include <iostream>

#include <unordered_set>

int main() {

  // Create an unordered set of integers

  std::unordered_set<int> my_set;

  // Insert some elements into the set

  my_set.insert(3);

  my_set.insert(1);

  my_set.insert(2);

  my_set.insert(4);

  // Print all elements in the set

  for (const auto& elem : my_set)

    std::cout << elem << " ";

  

  std::cout << std::endl;

  // Search for an element in the set

  if (my_set.find(2) != my_set.end())

    std::cout << "Found 2 in the set" << std::endl;

   else

    std::cout << "Did not find 2 in the set" << std::endl;

  

  // Remove an element from the set

  my_set.erase(3);

  // Print all elements in the set again

  for (const auto& elem : my_set)

    std::cout << elem << " ";

  

  std::cout << std::endl;

  return 0;

}

输出结果为:


1 2 3 4

Found 2 in the set

1 2 4

可以看到,std::unordered_set中的元素顺序是随机的,可以通过insert(插入),find(查找)和erase(删除)等函数对元素进行操作。经常会使用auto类型,因为可以自动地选择正确的类型,这样代码会更加简洁。

总结起来,std::unordered_set是一种高效的无序集合,可以用来存储一组不同的元素,并使用哈希表实现。在许多场景下,使用std::unordered_set比std::set更加优势,但也需要根据具体情况进行选择。无论哪种情况,std::unordered_set都是C++当中非常有用的一个工具。

  
  

评论区

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