zoukankan      html  css  js  c++  java
  • C++ STL 常用查找算法

    C++ STL 常用查找算法

    adjacent_find()

    在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的迭代器。否则返回past-the-end。

    vector<int> vecInt;
    vecInt.push_back(1);
    vecInt.push_back(2);
    vecInt.push_back(2);
    vecInt.push_back(4);
    vecInt.push_back(5);
    vecInt.push_back(5);

    vector<int>::iterator it = adjacent_find(vecInt.begin(), vecInt.end());  //*it == 2

    binary_search

    在有序序列中查找value,找到则返回true。注意:在无序序列中,不可使用。
    set<int> setInt;
    setInt.insert(3);
    setInt.insert(1);
    setInt.insert(7);
    setInt.insert(5);
    setInt.insert(9);
    bool bFind = binary_search(setInt.begin(),setInt.end(),5);

    count()

    利用等于操作符,把标志范围内的元素与输入值比较,返回相等的个数。
    vector<int> vecInt;
    vecInt.push_back(1);
    vecInt.push_back(2);
    vecInt.push_back(2);
    vecInt.push_back(4);
    vecInt.push_back(2);
    vecInt.push_back(5);
    int iCount = count(vecInt.begin(),vecInt.end(),2); //iCount==3

    count_if()

    假设vector<int> vecIntA,vecIntA包含1,3,5,7,9元素
    //先定义比较函数
    bool GreaterThree(int iNum)
    {
           if(iNum>=3)
           {
                  return true;
           }
           else
           {
                  return false;
           }
    }
    int iCount = count_if(vecIntA.begin(), vecIntA.end(), GreaterThree); //此时iCount == 4

    find()

    find: 利用底层元素的等于操作符,对指定范围内的元素与输入值进行比较。当匹 配时,结束搜索,返回该元素的迭代器。
    equal_range: 返回一对iterator,第一个表示lower_bound,第二个表示 upper_bound。

    vector<int> vecInt;
    vecInt.push_back(1);
    vecInt.push_back(3);
    vecInt.push_back(5);
    vecInt.push_back(7);
    vecInt.push_back(9);
    vector<int>::iterator it = find(vecInt.begin(), vecInt.end(), 5); //*it == 5


    find_if()

    find_if: 使用输入的函数代替等于操作符执行find。返回被找到的元素的迭代器。
    假设vector<int> vecIntA,vecIntA包含1,3,5,3,9元素
    vector<int>::it = find_if(vecInt.begin(),vecInt.end(),GreaterThree);
    此时 *it==3, *(it+1)==5, *(it+2)==3, *(it+3)==9 

  • 相关阅读:
    Leetcode-113 Path Sum II(路径总和 II)
    Leetcode-946 验证栈序列(Validate Stack Sequences)
    Leetcode-945 Minimum Increment to Make Array Unique(使数组唯一的最小增量)
    UVa-10129 Play on Words
    UVa-10305 Ordering Tasks
    UVa-816 Abbott's Revenge
    UVa-1103 Ancient Messages
    种子填充(flood fill)
    内存池
    Leetcode-942 DI String Match(增减字符串匹配)
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/7793352.html
Copyright © 2011-2022 走看看