Sam*_*son 1 c++ algorithm vector
我期待在创建一种算法,将比较2个载体(v1,v2),并创建新的矢量v3,将持有之间不共享的值v1和v2.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int args[])
{
vector<int> v1 = { 1,2,3,4,5,6,7,8,9 };
vector<int> v2 = { 1,2,6 };
vector<int> v3; //V3 should equal = {3,4,5,7,8,9}.
return 0;
}
Run Code Online (Sandbox Code Playgroud)
矢量将始终排序.
如果在您的示例中,范围已排序,则可以使用std::set_symmetric_difference.它将返回两个范围之间不共享的所有元素.使用您将使用的示例
std::set_symmetric_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter(v3));
Run Code Online (Sandbox Code Playgroud)
所以把它们放在一起我们有
int main()
{
std::vector<int> v1 = { 1,2,3,4,5,6,7,8,9 };
std::vector<int> v2 = { 1,2,6 };
std::vector<int> v3; //V3 should equal = {3,4,5,7,8,9}.
std::set_symmetric_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter(v3));
for (auto e : v3)
std::cout << e << " ";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
3 4 5 7 8 9
Run Code Online (Sandbox Code Playgroud)