美文网首页
STL算法之常用集合算法

STL算法之常用集合算法

作者: 二进制人类 | 来源:发表于2022-10-19 19:26 被阅读0次

set_intersection

API

/*
set_intersection 算法 求两个 set 集合的交集
注意:两个集合必须是有序序列
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
@return 目标容器的最后一个元素的迭代器地址
*/
set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

实例

 vector<int> v1;
    v1.push_back(1);
    v1.push_back(3);
    v1.push_back(5);
    v1.push_back(7);
    v1.push_back(9);
    vector<int> v2;
    v2.push_back(7);
    v2.push_back(9);
    v2.push_back(11);
    v2.push_back(13);
    v2.push_back(17);
    vector<int> v3;
    v3.resize( min(v1.size(), v2.size()));
    //函数的返回值 是v3有效的结束位置
    vector<int>::iterator ret;
    ret = set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(), v3.begin());
    copy(v3.begin(),ret, ostream_iterator<int>(cout," "));//7 9
    cout<<endl;

set_union

API

/*
set_union 算法 求两个 set 集合的并集
注意:两个集合必须是有序序列
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
@return 目标容器的最后一个元素的迭代器地址
*/
set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

实例

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using  namespace std;
int main() {
    vector<int> v1;
    v1.push_back(1);
    v1.push_back(3);
    v1.push_back(5);
    v1.push_back(7);
    v1.push_back(9);

    vector<int> v2;
    v2.push_back(7);
    v2.push_back(9);
    v2.push_back(11);
    v2.push_back(13);
    v2.push_back(17);
    vector<int> v3;
    v3.resize( v1.size()+v2.size());
    //函数的返回值 是v3有效的结束位置
    vector<int>::iterator ret;
    ret = set_union(v1.begin(),v1.end(),v2.begin(),v2.end(), v3.begin());
    copy(v3.begin(),ret, ostream_iterator<int>(cout," "));//1 3 5 7 9 11 13 17
    cout<<endl;
    return 0;
}

set_difference

API

/*
set_difference 算法 求两个 set 集合的差集
注意:两个集合必须是有序序列
@param beg1 容器 1 开始迭代器
@param end1 容器 1 结束迭代器
@param beg2 容器 2 开始迭代器
@param end2 容器 2 结束迭代器
@param dest 目标容器开始迭代器
@return 目标容器的最后一个元素的迭代器地址
*/
set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)

实例

#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using  namespace std;
int main() {

    vector<int> v1;
    v1.push_back(1);
    v1.push_back(3);
    v1.push_back(5);
    v1.push_back(7);
    v1.push_back(9);

    vector<int> v2;
    v2.push_back(7);
    v2.push_back(9);
    v2.push_back(11);
    v2.push_back(13);
    v2.push_back(17);

    vector<int> v3;
    v3.resize( v1.size());

    //函数的返回值 是v3有效的结束位置
    vector<int>::iterator ret;
    ret = set_difference(v1.begin(),v1.end(),v2.begin(),v2.end(), v3.begin());

    copy(v3.begin(),ret, ostream_iterator<int>(cout," "));//1 3 5
    cout<<endl;
    return 0;
}

相关文章

网友评论

      本文标题:STL算法之常用集合算法

      本文链接:https://www.haomeiwen.com/subject/lxexzrtx.html