zoukankan      html  css  js  c++  java
  • c++ find函数用法

    转:http://www.cnblogs.com/kaituorensheng/p/4072901.html (C++中find函数)

    http://blog.csdn.net/huangyimin/article/details/6133650 (用于vector的find函数及STL的理解笔记)

    find函数主要实现的是在容器内查找指定的元素,并且这个元素必须是基本数据类型的。查找成功返回一个指向指定元素的迭代器,查找失败返回end迭代器。

    注意:

    • find() 不属于 vector 的成员,而存在于算法中,应加上头文件 #include <algorithm>
    • string::find 这类型的函数,返回值类型都是 string::size_type (或者写为 size_t 型), 而 string::size_type 其实是一种 unsigned int 类型。find 的结果记录匹配的位置,或者返回一个名为 string::npos 的特殊值,说明查找没有匹配。string 类将 npos 定义为保证大于任何有效下标的值。string::npos 的值是无符号型类型的,其值是(unsigned int)(-1),也就是4294967295

    头文件

    #include <algorithm>

    函数实现

    复制代码
    template<class InputIterator, class T>
    InputIterator find (InputIterator first, InputIterator last, const T& val)
    {
      while (first!=last) 
      {
         if (*first==val) return first;
         ++first;
       }
        return last;
    }
    复制代码

    例1(vector)

    复制代码
    #include <iostream>
    #include <algorithm>
    #include <vector>
    using namespace std;
    
    int main()
    {
        vector<string> m;
        m.push_back("hello");
        m.push_back("hello2");
        m.push_back("hello3");
        if (find(m.begin(), m.end(), "hello") == m.end())
            cout << "no" << endl;
        else
            cout << "yes" << endl;
    }
    复制代码

    例2(set)

    复制代码
    #include <iostream>
    #include <algorithm>
    #include <string>
    #include <set>
    using namespace std;
    
    int main()
    {
        set<string> m;
        m.insert("hello");
        m.insert("hello2");
        m.insert("hello3");
        if (find(m.begin(), m.end(), "hello") == m.end())
            cout << "no" << endl;
        else
            cout << "yes" << endl;
    }
    复制代码

    1:set自身有个find函数,举例如下:

    复制代码
    #include <iostream>
    #include <algorithm>
    #include <string>
    #include <set>
    using namespace std;
    
    int main()
    {
        set<string> m;
        m.insert("hello");
        m.insert("hello2");
        m.insert("hello3");
        if (find(m.begin(), m.end(), "hello") == m.end())
            cout << "no" << endl;
        else
            cout << "yes" << endl;
    }
    复制代码

    2:string自身有个find函数,举例如下:

    复制代码
    #include <iostream>
    #include <algorithm>
    #include <string>
    using namespace std;
    
    int main()
    {
        string s = "helllo";
        if (s.find("e") == string::npos)  //yes
            cout << "no" << endl;
        else
            cout << "yes" << endl;
    
        if (s.find("z") == string::npos)  //no
            cout << "no" << endl;
        else
            cout << "yes" << endl;
    }
    复制代码
  • 相关阅读:
    垃圾回收的可触及性
    常用的垃圾回收算法
    石子归并(区间dp 模板)
    D. Zero Quantity Maximization ( Codeforces Round #544 (Div. 3) )
    Parity game(带权并查集+离散化)
    Supermarket(贪心/并查集)
    D. Nested Segments(树状数组、离散化)
    dijkstra,belllman-ford,spfa最短路算法
    重载符
    Electrification Plan 最小生成树(prim+krusl+堆优化prim)
  • 原文地址:https://www.cnblogs.com/sylar5/p/6496693.html
Copyright © 2011-2022 走看看