我正在编写代码以返回v1
中的数据,该数据不在v2
向量中,不使用C++重复。如何找到不重复的两个向量的不同集合?
std::set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(),
std::inserter(diff, diff.begin()));
然而,当我输入V1,V2是
v1=[137 138 139 140 141 142 143 144 148 150 157 158 161]
v2=[138 157 150 140 137 158 141 139 143 148]
输出结果意想不到的解决方案
diff=[ 137 139 140 141 142 143 144 148 150 161]
虽然,我期望的解决方案必须是
diff=[ 142 144 161]
我应该纠正我的功能?谢谢
如果您阅读例如[这个'std :: set_difference'参考](http://en.cppreference.com/w/cpp/algorithm/set_difference),你会看到它“复制**排序**范围中的元素[first1,last1 )在**排序**范围[first2,last2)中找不到从d_first开始的范围“。而这正是它所做的。请注意我添加的重点,关于数据被**排序**为*两个*范围。 –
那么,我应该如何实现我的预期结果。我知道MATLAB中的一些函数,因为'set_diff'可以达到我的预期结果 – KimHee
确保* both *向量[sorted](http://en.cppreference.com/w/cpp/algorithm/sort)。 –