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 

  • 相关阅读:
    asp结合swf外调代码
    loadMovie与loadMovieNum区别
    行业常用名词及缩写定义
    用javascript 控制跳转页面
    jdk源码整数和字符串间的转换
    动态代理动态生成java文件并编译成class文件
    JDK源码分析——动态代理源码(Proxy类)
    策略模式与工厂模式比较
    Java编程:常见问题汇总
    工厂方法与抽象工厂的区别
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/7793352.html
Copyright © 2011-2022 走看看