21xrx.com
2024-11-10 00:55:20 Sunday
登录
文章检索 我的文章 写文章
unorder_set中能否容纳vector类型?
2023-07-05 04:17:40 深夜i     --     --
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函数和相等运算符。

  
  

评论区

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