std::set_intersection 和迭代器

not*_*orb 2 c++ algorithm iterator c++-standard-library c++11

是否可以将输出std::set_intersection或其他std::set_*算法函数直接添加到类型中std::set

到目前为止,我只能想到一种直接添加到允许std::back_inserter.

#include <set>
#include <algorithm>
#include <vector>
#include <iterator>
#include <iostream>
using namespace std;

int main()
{
   // sorted so ok for set operations
   set<int> s = { 2, 3, 1 };
   set<int> s2 = { 1 };
   vector<int> v;

   set_intersection(s.begin(), s.end(), s2.begin(), s2.end(),
      back_inserter(v));

   copy(v.begin(), v.end(), ostream_iterator<int>(cout, ","));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

JeJ*_*eJo 5

是的,您可以使用std::inserter, 而不是std::back_inserter这样。

#include <iterator> // std::inserter

std::set<int> s3;
std::set_intersection(s.begin(), s.end(), s2.begin(), s2.end(),
      std::inserter(s3, s3.end()));
//    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)