首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::set_intersection和迭代器

std::set_intersection和迭代器
EN

Stack Overflow用户
提问于 2020-08-02 15:09:33
回答 2查看 89关注 0票数 2

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

到目前为止,我只能想到一种直接添加到允许std::back_inserter的东西中的方法。

代码语言:javascript
复制
#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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-02 15:15:06

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

代码语言:javascript
复制
#include <iterator> // std::inserter

std::set<int> s3;
std::set_intersection(s.begin(), s.end(), s2.begin(), s2.end(),
      std::inserter(s3, s3.end()));
//    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
票数 5
EN

Stack Overflow用户

发布于 2020-08-02 15:11:59

是的,只需使用inserter而不是back_inserter

代码语言:javascript
复制
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()));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63217611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档