• find和find_if


    find函数

    是在一个迭代器范围内查找特定元素得函数,可将将他用于任意容器类型得元素。这个函数返回的是所找元素得引用,如果没有找到元素就会返回这个容器得尾迭代器。

    #include <iostream>
    #include <vector>
    #include <time.h>
    
    int main()
    {
        std::vector<int> vec;
        int inputTofind = 0;
        srand(time(NULL));
    
        for (int i = 0; i < 10; ++i)
        {
            int temp = rand() % 100;
            vec.push_back(temp);
            std::cout << temp << " ";
        }
    
        std::cout << std::endl;
        std::cout << "you want to look for num : ";
        std::cin >> inputTofind;
    
        auto endIt = std::end(vec);
        auto result = find(std::begin(vec), endIt, inputTofind);
    
        if (result != endIt)
        {
            std::cout << "find it " << *result << std::endl;
        }
        else
        {
            std::cout << "No find!" << std::endl;
        }
    
    
        return 0;
    }

    结果:

    21 7 55 81 67 44 18 10 82 87
    you want to look for num : 81
    find it 81
    请按任意键继续. . .

    find_if函数

    与find()函数一样,区别就是它可以接受接收一个谓词函数,而不是简单的匹配元素,谓词函数返回的是true或则false;如果是返回了true则find_if函数返回了查找元素的迭代器;如果一直找不到制定的元素就会返回尾迭代器;

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <time.h>
    
    bool perfectScord(int scord)
    {
        return scord >= 80;
    }
    
    int main()
    {
        std::vector<int> vec;
        int inputTofind = 0;
        srand(time(NULL));
    
        for (int i = 0; i < 10; ++i)
        {
            int temp = rand() % 100;
            vec.push_back(temp);
            std::cout << temp << " ";
        }
    
        std::cout << std::endl;
    //     std::cout << "you want to look for num : ";
    //     std::cin >> inputTofind;
    
        auto endIt = std::cend(vec);
        
        auto result = find_if(std::cbegin(vec), endIt, perfectScord);
    
        if (result != endIt)
        {
            std::cout << "find it " << *result << std::endl;
        }
        else
        {
            std::cout << "No find!" << std::endl;
        }
    
        return 0;
    }

    结果是:

    86 82 59 13 84 91 42 18 92 67
    find it 86
    请按任意键继续. . .

    注意的是find_if函数在头文件#include <algorithm>

    其实这里的谓词函数也能换成lambda函数:

    auto result = find_if(std::cbegin(vec), endIt, [](int i) {return i > 80; });
  • 相关阅读:
    Ch’s gift HDU
    String HDU
    Rikka with String HDU
    DNA repair HDU
    Ring HDU
    A Secret HDU
    看详细的tomcat报错信息
    linux tomcat服务器优化配置
    linux常用命令
    关于Context []startup failed due to previous errors有效解决方式
  • 原文地址:https://www.cnblogs.com/boost/p/10578866.html
Copyright © 2020-2023  润新知