zoukankan      html  css  js  c++  java
  • 泛型算法(二十二)之集合操作算法

    1、includes(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2):判断第2个已为升序的序列的元素是否都出现在第1个升序序列中。

        std::vector<int> c1 = {1, 2, 3, 4};
        std::vector<int> c2 = {1, 2, 3};
    
        bool i = std::includes(c1.begin(), c1.end(), c2.begin(), c2.end());
    
        std::cout << (int)i;
        //打印结果:1

    2、includes(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, Compare comp):重载版本,用给定谓词pred代替operator<。

    自己实现comp,向算法定制操作。

    3、set_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result):两个升序序列之差。

        std::vector<int> c1 = {1, 2, 3, 4};
        std::vector<int> c2 = {1, 2, 3};
        std::vector<int> result;
        result.resize(1);
    
        std::set_difference(c1.begin(), c1.end(), c2.begin(), c2.end(), result.begin());
    
        for (auto var : result)
        {
            std::cout << var << ",";
        }
        //打印结果:4

    4、set_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp):重载版本。

    自己实现comp,向算法定制操作。

    5、set_intersection(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result):两个升序序列(集合)的交

        std::vector<int> c1 = {1, 2, 3, 4};
        std::vector<int> c2 = {1, 2, 3};
        std::vector<int> result;
        result.resize(3);
    
        std::set_intersection(c1.begin(), c1.end(), c2.begin(), c2.end(), result.begin());
    
        for (auto var : result)
        {
            std::cout << var << ",";
        }
        //打印结果:1,2,3,

    6、set_intersection(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp):重载版本。

    自己实现comp,向算法定制操作。

    7、set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result):两个升序序列的对称差。

        std::vector<int> c1 = {1, 2, 3, 4};
        std::vector<int> c2 = {1, 2, 3, 5};
        std::vector<int> result;
        result.resize(2);
    
        std::set_symmetric_difference(c1.begin(), c1.end(), c2.begin(), c2.end(), result.begin());
    
        for (auto var : result)
        {
            std::cout << var << ",";
        }
        //打印结果:4,5,

    8、set_symmetric_difference(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp):重载版本。

    自己实现comp,向算法定制操作。

    9、set_union(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result):两个升序序列的并。

        std::vector<int> c1 = {1, 2, 3, 4};
        std::vector<int> c2 = {1, 2, 3, 5};
        std::vector<int> result;
        result.resize(5);
        //求两个集合的并集
        std::set_union(c1.begin(), c1.end(), c2.begin(), c2.end(), result.begin());
    
        for (auto var : result)
        {
            std::cout << var << ",";
        }
        //打印结果:1,2,3,4,5,

    10、set_union(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2, OutputIterator result, Compare comp):重载版本。

    自己实现comp,向算法定制操作。

  • 相关阅读:
    【Unity】近期整理Unity4.x 项目升级Unity5.0 过程中出现的各种常见问题,与大家共享。
    extjs Combox 调用数据
    CSDN博客2014年4月24日清理缓存
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法訪问server。请验证实例名称是否正确而且 SQL Server 已配置为同意远程连接。
    海思 3520D 移植Qt4.5.3 一
    Android 输入框限制字符输入数
    Making User-Managed Backups-17.4、Making User-Managed Backups of Online Tablespaces and Datafiles
    spring 使用外部属性文件
    mysql字符串替换
    maven3+eclipse搭建webAPP企业级实战《一》
  • 原文地址:https://www.cnblogs.com/dongerlei/p/5147497.html
Copyright © 2011-2022 走看看