【发布时间】:2020-12-04 20:28:54
【问题描述】:
在 C++ 中,我想使用 algorithm 中的 set_symmetric_difference 获取两个 STL 集合并生成一个集合,其中包含不在两个集合中的所有元素。
我收到一个编译错误“'_UDest': you cannot assign to a variable that is const”,所以我误解了如何使用set_symmetric_difference。
代码如下(C++编译器为Visual Studio 2019):
set<unsigned short> a, b, diff;
// code to add entries to a and b
set_symmetric_difference(a.begin(), a.end(), b.begin(), b.end(), diff.begin()); // error C3892: '_UDest': you cannot assign to a variable that is const
【问题讨论】:
-
您不能使用
diff.begin()插入。查看std::inserter。 -
您不能像写入向量或双端队列那样写入已排序的容器。他们是完全不同的野兽。您似乎缺乏基础知识:获得一本好的教学书籍。你不能通过反复试验来学习 C++!
-
@curiousguy:如果
diff是vector或deque,那将无法正常工作。您需要充分调整其大小或使用std::back_inserter作为序列容器。 -
@FredLarson 这对常规向量迭代器不起作用,而且您不会收到编译时错误,只有内存损坏!