C++ C++;得到两个向量之间的差

C++ C++;得到两个向量之间的差,c++,vector,C++,Vector,假设你有两个向量: vector<int> ar1, a2; ar1 = {1,1,2,3,3,4,5,5,6}; ar2 = {1,2,3,4,5,6}; //来自cppreference #包括 #包括 #包括 #包括 int main(){ 向量v1{1,1,2,3,3,4,5,5,6}; std::向量v2{1,2,3,4,5,6}; std::矢量差; //无需排序,因为它已排序 设置差异(v1.begin(),v1.end(),v2.begin(),v2.end(),

假设你有两个向量:

vector<int> ar1, a2;

ar1 = {1,1,2,3,3,4,5,5,6};
ar2 = {1,2,3,4,5,6};
//来自cppreference
#包括
#包括
#包括
#包括
int main(){
向量v1{1,1,2,3,3,4,5,5,6};
std::向量v2{1,2,3,4,5,6};
std::矢量差;
//无需排序,因为它已排序
设置差异(v1.begin(),v1.end(),v2.begin(),v2.end(),
插入器(diff,diff.begin());

对于(自动i:v1)std::你还没试过什么吗?你说的“像这样”是什么意思?那应该是什么意思?@Richard,出于某种模糊的原因,在写这篇文章时,这个没有研究,不清楚的问题得到了四个赞成票。我认为你不应该抱怨太多…问题的不清楚部分是什么?我有一个向量{1,2,3}另一个向量{1,2},我想做{1,2,3}-{1,2},给我一个{3}结果。我想对这篇文章投赞成票,但我不能!这正是我想做的!Meh-这是cppreference中的一个例子,所以不值得投赞成票!作为旁注-Richard给出了一个带有排序向量的例子-所以这个问题的答案是完全合理的。不确定为什么这值得投反对票。@GeorgeNewton you can'so使用
std::multiset
,它允许多个键具有相同的值。std::sort(std::begin(v1),std::end(v1))
b = ar1 - ar2
// b = {1,3,5}
//from cppreference
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
 
int main() {
 
    std::vector<int> v1 {1,1,2,3,3,4,5,5,6};
    std::vector<int> v2 {1,2,3,4,5,6};
    std::vector<int> diff;
    //no need to sort since it's already sorted
    std::set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(),
        std::inserter(diff, diff.begin()));
 
    for (auto i : v1) std::cout << i << ' ';
    std::cout << "minus ";
    for (auto i : v2) std::cout << i << ' ';
    std::cout << "is: ";
 
    for (auto i : diff) std::cout << i << ' ';
    std::cout << '\n';
}