美文网首页工作生活
C++ STL equal_range 函数说明

C++ STL equal_range 函数说明

作者: book_02 | 来源:发表于2019-07-03 00:12 被阅读0次

说明

equal_range 返回范围[first,last)内等于指定值val的子范围的迭代器。

注意的是使用这个函数的前提是范围[first,last)内的元素是有序的。

同时注意函数的返回值类型,返回值是个pair对象,pair的first是左边界的迭代器,pair的second是右边界的迭代器。区间是左闭右开的,[左边界,右边界)。

头文件

#include <algorithm>

例子


#include <iostream>
#include <vector>
#include <algorithm>

bool mygreater (int i,int j) { return (i>j); }

int main(int argc, char **argv) 
{  
    int myints[] = {10,20,30,30,20,10,10,20};
    std::vector<int> v(myints,myints+8);                         // 10 20 30 30 20 10 10 20
    std::pair<std::vector<int>::iterator,std::vector<int>::iterator> bounds;

    // using default comparison:
    std::sort (v.begin(), v.end());                              // 10 10 10 20 20 20 30 30
    bounds=std::equal_range (v.begin(), v.end(), 20);            //          ^        ^
    std::cout << "bounds at positions " << (bounds.first - v.begin());
    std::cout << " and " << (bounds.second - v.begin()) << '\n';
    
    // using "mygreater" as comp:
    std::sort (v.begin(), v.end(), mygreater);                   // 30 30 20 20 20 10 10 10
    bounds=std::equal_range (v.begin(), v.end(), 20, mygreater); //       ^        ^

    std::cout << "bounds at positions " << (bounds.first - v.begin());
    std::cout << " and " << (bounds.second - v.begin()) << '\n';
    return 0;
}

结果:

bounds at positions 3 and 6
bounds at positions 2 and 5

第一次使用时,使用的是默认的比较器。数组中等于20的范围是[3, 6).

第二次使用时,使用的是自定义比较器,注意前后要使用一直,即sort使用自定义比较器,equal_range也是使用该比较器。数组中等于20的范围这时变成了[2, 5).

参考

http://www.cplusplus.com/reference/algorithm/equal_range/

相关文章

  • C++ STL equal_range 函数说明

    说明 equal_range 返回范围[first,last)内等于指定值val的子范围的迭代器。 注意的是使用这...

  • C++ STL transform 函数说明

    说明 简而言之,transform是用来做转换的。转换有两种:一元转换和二元转换。 一元转换是对容器给定范围内的每...

  • C++ STL iota 函数说明

    说明 iota用一个从value递增的数列给[first, last)的容器赋值等效于 C++11 才引入,之前版...

  • C++库

    标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集...

  • GeekBand C++ STL与泛型编程 第一周学习笔记

    STL概述 C++标准库包含STL和一些其他内容 STL有六大组件: 容器,分配器,算法,迭代器,适配器,仿函数 ...

  • [资源]C++ 程序员必收藏

    C++ 资源大全中文版 标准库 C++标准库,包括了STL容器,算法和函数等。 C++ Standard Libr...

  • 读书笔记17.06.03

    C++ STL:Listlist是C++标准模版库(STL,Standard Template Library)中...

  • [C++] STL 容器

    参考:[C++] STL 容器 (一) - 基本介紹[C++] STL 容器 (二) - Iterator 部分示例:

  • C++后端开发的踩坑整理

    C++开发的一些经验和踩坑整理 STL相关的坑 1. std::sort()函数要求严格弱序 STL文档中要求so...

  • C++ STL back_inserter 函数说明

    说明 back_inserter用于在末尾插入元素。实现方法是构造一个迭代器,这个迭代器可以在容器末尾添加元素。这...

网友评论

    本文标题:C++ STL equal_range 函数说明

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