我正在尝试使用set_intersection,如下所述
std::set<std::pair<char*, int>,FileLinePairComapare > netSet;
std::set<std::pair<char*, int>,FileLinePairComapare > portSet;
std::set<std::pair<char*, int>,FileLinePairComapare> result;
std::set<std::pair<char*, int>,FileLinePairComapare>::iterator it;
std::set_intersection(netSet.begin(),netSet.end(),portSet.begin(),portSet.end(),result.begin());我收到最后一行的编译错误
在_OIter std::set_intersection(_IIter1、_IIter1、_IIter2、_IIter2、_OIter)的实例化中,_IIter1 = std::_Rb_tree_const_iterator >;_IIter2 = std::_Rb_tree_const_iterator >;_OIter= std::_Rb_tree_const_iterator >: 将‘const std::pair’作为‘std::pair&std::pair::operator=’的‘this’参数传递,丢弃限定符-fpermissive。
在我使用这些集合和set_intersection时,没有cons函数。
发布于 2014-07-16 07:36:54
不能使用算法直接写入std::set迭代器。所有的集合迭代器都是const,因为更改任何值都会破坏树(同样适用于std::map键-映射迭代器只能修改映射的值)。
即使可以,它也不能工作,因为容器是空的(例如,如果您试图使用std::vector作为目标容器,最终会出现未定义的行为)。
使用std::inserter
std::set_intersection(
netSet.begin(), netSet.end(),
portSet.begin(), portSet.end(),
std::inserter(result, result.end())
);https://stackoverflow.com/questions/24774583
复制相似问题