标准库<algorithm>里的includes函数

使用一个东西,不明白它的道理,不高明
——侯捷老师

1. includes()函数声明

1.1 默认比较方式

template<class InputIterator1, class InputIterator2>
   bool includes(InputIterator1 first1, InputIterator1 last1,
                 Inputiterator2 first2, InputIterator2 last2)

1.2 自定义比较方式

template <class InputIterator1, class InputIterator2, class Compare>
  bool includes ( InputIterator1 first1, InputIterator1 last1,
                  InputIterator2 first2, InputIterator2 last2, Compare comp );

2. 等价操作实现

template<class InputIterator1, class InputIterator2>
        bool includes(InputIterator1 first1, InputIterator1 last1,
                      InputIterator2 first2, InputIterator2 last2) {
            while (first2 != last2) {
                if ((first2 == last1) || (*first2 < *first1)) return false;
                if (!(*first1 < *first2) ++first2;
                ++first1;
            }
        return true;
    }

3. 示例程式

bool myfunction (int i, int j) { return i<j; }
    void test_includes() {
      int container[] = {5,10,15,20,25,30,35,40,45,50};
      int continent[] = {40,30,20,10};
    
      std::sort (container,container+10);
      std::sort (continent,continent+4);
    
      // using default comparison:
      if ( std::includes(container,container+10,continent,continent+4) )
        std::cout << "container includes continent!\n";
    
      // using myfunction as comp:
      if ( std::includes(container,container+10,continent,continent+4, myfunction) )
        std::cout << "container includes continent!\n";
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容