21xrx.com
2025-04-27 19:33:05 Sunday
文章检索 我的文章 写文章
unorder_set中能否容纳vector类型?
2023-07-05 04:17:40 深夜i     25     0
unordered_set vector 容纳

unordered set是C++中一种无序的关联式容器,和set一样,它也可以用于快速查找,但区别在于它不会对插入的元素进行排序。而在使用unordered set时,我们可能会有一个问题:能否容纳vector类型?

答案是可以的。在C++11以后,unordered set加入了对自定义类型的支持。也就是说,它不仅可以存储基本数据类型,还可以存储自定义的对象。而vector属于STL中的标准容器之一,也可以被看作是一个自定义类型。因此,我们可以将vector作为unordered set的元素类型。

下面是一个简单的例子:

#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
int main() {
 unordered_set<vector<int>> mySet;
 vector<int> vec11;
 vector<int> vec24;
 vector<int> vec3 2;
 
 mySet.insert(vec1);
 mySet.insert(vec2);
 mySet.insert(vec3);
 
 for (auto vec : mySet) {
  for (auto elem : vec)
   cout<<elem<<" ";
  
  cout<<endl;
 }
 
 return 0;
}

在上述代码中,我们定义了一个unordered_set,元素类型为vector ,并向其添加了三个元素。通过运行该程序,我们可以看到输出结果为:

1 2 3
4 5 6

可以看到,unordered set中仅包含两个元素,而不是三个,这是因为vec1和vec3是相同的向量,它们被视为同一元素。

需要注意的是,在使用unordered set存储自定义类型时,需要自行实现hash函数和相等运算符。因为unordered set是通过hash函数和相等运算符来决定元素之间的唯一性和存储位置的。这里我们并没有在代码中实现这些函数,是因为vector类型内部已经实现了可以满足unordered set的要求的hash函数和相等运算符。

总之,unordered set可以容纳vector类型,而且在STL中的容器多数情况下都可以被放入到unordered set中。在实现时,我们要注意自行实现hash函数和相等运算符。

  
  

评论区

请求出错了