我有两个向量.我需要从vector1中删除vector2中的内容.我使用Visual Studio 2010.
似乎有一种方法:http: //msdn.microsoft.com/en-us/library/system.windows.vector.subtract.aspx
但它不知何故不起作用,甚至没有代码示例.
你可以帮帮我吗?如果不存在标准方法,也许您可以建议如何通过循环组织它?先感谢您.
#include "stdafx.h";
#include <vector>;
#include <iostream>
using namespace std;
int main ()
{
vector<int> vector1;
vector<int> vector2;
for (int i = 0; i < 10; i++)
{
vector1.push_back (i);
}
for (int i = 0; i < 6; i++)
{
vector2.push_back (i);
}
myvector1 = Subtract(vector1, vector2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
K-b*_*llo 21
您应该使用std::set_difference:http://en.cppreference.com/w/cpp/algorithm/set_difference
首先,您将需要sort您的vectors,因为set_difference在排序范围上操作.也就是说,除非它们已经排序(如在您的用例中).
std::sort(vector1.begin(), vector1.end());
std::sort(vector2.begin(), vector2.end());
Run Code Online (Sandbox Code Playgroud)
然后你这样称呼它:
std::vector<int> difference;
std::set_difference(
vector1.begin(), vector1.end(),
vector2.begin(), vector2.end(),
std::back_inserter( difference )
);
Run Code Online (Sandbox Code Playgroud)
这将附加到difference找不到的那些元素vector1中vector2.
std::transform(vector1.begin(), vector1.end(), vector2.begin(), vector1.begin(), std::minus<int>())
第四个参数是结果的位置.即使向量的大小不同,它也应该起作用.