std::set_intersection 和迭代器
std::set_intersection and iterators
是否可以将 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;
}
是的,只需使用 inserter
而不是 back_inserter
set<int> s = {2, 3, 1};
set<int> s2 = {1};
set<int> s3;
set_intersection(s.begin(), s.end(), s2.begin(), s2.end(),
inserter(s3, s3.end()));
是的,您可以使用 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()));
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
是否可以将 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;
}
是的,只需使用 inserter
而不是 back_inserter
set<int> s = {2, 3, 1};
set<int> s2 = {1};
set<int> s3;
set_intersection(s.begin(), s.end(), s2.begin(), s2.end(),
inserter(s3, s3.end()));
是的,您可以使用 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()));
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^