如何写向量的无序向量集,即unordered_set<向量<向量<int>>集合?
How to write unordered set of vector of vector, namely unordered_set<vector<vector<int>> set?
我想有一个集合来存储几个图形,每个图形有几个点,每个点都有自己的坐标。所以这是我的代码:
unordered_set<vector<vector<int>> set;
vector<vector<int>> graph;
graph.push_back({1,1});
graph.push_back({2,2});
set.insert(graph);
然后失败表明该集合期望两个参数,但提供了一个。 我知道对于这个问题,最好建立一个数据结构来存储点和图形。但我只想知道为什么这不能通过一套来实现?
只是为了激发你的兴趣:
住在科里鲁
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_utility.hpp>
#include <iostream>
int main() {
using Graph = boost::adjacency_list<>;
std::list<Graph> set;
Graph graph(3);
add_edge(1, 1, graph);
add_edge(2, 2, graph);
set.push_back(graph);
for (auto& g : set) {
print_graph(g);
}
}
指纹
0 -->
1 --> 1
2 --> 2
在集合中使用
规定元素是"唯一的"。所以他们必须知道如何比较元素:
- std::set 需要一个弱总订单(基本上是
a < b
( - std::unordered_set 需要一个哈希 + 相等性测试(基本上是
std::hash<Graph>(a)
和a == b
(
然而,独特性实际上并不常见。你想看看图同态吗?你想解决什么问题?
我会声明名为:的类或Point
结构,其中包含两个 int 变量并将每个点推送到图形(现在需要vector<Point>
(,然后将图形推送到您的集合(您还可以声明名为:包含 vector 的类或结构Graph
( 然后你的代码应该是:
unordered_set<Graph> set;
Graph graph;
graph.push_back(Point(1,1));
graph.push_back(Point(2,2));
set.insert(graph);
另外,我认为您不需要使用unorderd_set,我认为set
就足够了,在这种情况下,您的代码将是(没有类(:
std::set < std::vector<std::vector<int>>> set;
std::vector<std::vector<int>> graph;
graph.push_back({ 1, 1 });
graph.push_back({ 1, 1 });
set.insert(graph);
如果你仍然想使用unorderd_ser我会看这里(你需要给unordered_set一个哈希函数(: https://learn.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2280?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev16.query%3FappId%3DDev16IDEF1%26l%3DEN-US%26k%3Dk(C2280(%26rd%3Dtrue&view=vs-2019
他们说这是一个已删除的功能,所以unorderd_set的这种使用是 iliglle 检查此链接并得到您的答案 unorderd_set,我仍然为您提供使用常规集
希望我回答了你的问题:(
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 呼叫运营商<<临时
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- 如何加入向量&lt; int&gt;到C 中的单个INT
- (C 14)操作员&lt;&lt;超负荷无法正如智能指针向量所预期的那样工作
- 如何过载<<用于YAML::Emitter的运算符,以序列化包含另一个自定义类的向量的自定义类