zoukankan      html  css  js  c++  java
  • std::find

    本章描述C++泛型算法find的设计和使用。


    我们先来看看C++官方网站上对find的描述

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

    (注:以下内容是我对C++官方网站上内容的理解,不准确的地方请见谅)

    • find函数的声明:
    template <class InputIterator, class T>
       InputIterator find (InputIterator first, InputIterator last, const T& val);
    • find函数的作用:

    在[first,last)范围内查找第一个与val相等的元素,并返回这个元素的迭代器(iterator),如果没有找到,则返回last。

    • find函数的实现:

    根据这个函数的实现,不难看出参数和返回值得类型,范围和使用方法,这里不再赘述。

    有一点需要注意,从函数的实现上我们可以看到find函数使用operator==来对元素是否相等进行判断,所以,如果你需要比较的内容的元素类型是自定义类型,那么你必须重载operator==。

     1 template<class InputIterator, class T>
     2 InputIterator find (InputIterator first, InputIterator last, const T& val)
     3 {
     4   while (first!=last)
     5   {
     6     if (*first==val) return first;
     7     ++first;
     8   }
     9   return last;
    10 }

    理论上的东西基本就这些,以下是我写的一个简单的例子

     1 #include <algorithm>
     2 
     3 #include <iostream>
     4 #include <string>
     5 #include <vector>
     6 
     7 using std::cout;
     8 using std::endl;
     9 using std::string;
    10 using std::vector;
    11 
    12 void print(vector<string> vec)
    13 {
    14     vector<string>::iterator iter;
    15     for (iter = vec.begin(); iter != vec.end(); iter++)
    16     {
    17         cout << *iter << " ";
    18     }
    19     cout << endl;
    20 }
    21 
    22 int main(void)
    23 {
    24     vector<string> vec;
    25     vec.push_back("a");
    26     vec.push_back("b");
    27     vec.push_back("c");
    28     vec.push_back("d");
    29     print(vec);
    30 
    31     vector<string>::iterator iter;
    32     iter = find(vec.begin(), vec.end(), "c");
    33     if (iter != vec.end())
    34     {
    35         cout << "found it: " << *iter << endl;
    36     }
    37     return 0;
    38 }
  • 相关阅读:
    解决Hash冲突的几种方式
    深入理解JDK8中的HashMap
    JAVA中两个int类型的变量在不借助第三个变量的情况下完成值的互换
    Feign调用时读取超时(Read timed out executing GET)解决
    windows上Jenkins安装及其配置
    windows下查看端口被占用及处理
    flutter IOS模拟器无法弹出软键盘
    Android-ION内存管理简介
    移动GPU分类/百科
    ApiGen4.1 windows安装教程
  • 原文地址:https://www.cnblogs.com/chinshing/p/3984333.html
Copyright © 2011-2022 走看看