【发布时间】:2016-08-21 04:48:38
【问题描述】:
我有一个对象向量,我正在尝试将每个对象复制到一个集合中:
std::set<MinTreeEdge>minTreeOutputSet;
for(std::vector<MinTreeEdge>::iterator it = minTreeOutput.begin(); it != minTreeOutput.begin(); ++it)
minTreeOutputSet.insert(*it);
这给了我一个错误,即插入调用中缺少某种比较('__x
minTreeOutputSet.insert(minTreeOutput[it]);
也是如此,但这给了我一个错误,即 operator[] 不匹配。
不允许将对象插入集合吗?如何正确地将向量中的对象插入到集合中?
【问题讨论】:
-
另外,您应该将
it与minTreeOutput.end()进行比较,而不是begin()。 -
为您的
MinTreeEdge定义一个operator<。 -
提示:那么你就可以做到
std::set<MinTreeEdge> minTreeOutputSet{ minTreeOutput.begin(), minTreeOutput.end() };。 -
请发布minimal reproducible example,包括逐字错误消息!