学习目标:

算法简介:

5.2.1 find

功能描述:

函数原型:

示例:

#include <algorithm>
#include <vector>
#include <string>
void test01() {

  vector<int> v;
  for (int i = 0; i < 10; i++) {
    v.push_back(i + 1);
  }
  //查找容器中是否有 5 这个元素
  vector<int>::iterator it = find(v.begin(), v.end(), 5);
  if (it == v.end())
  {
    cout << "没有找到!" << endl;
  }
  else
  {
    cout << "找到:" << *it << endl;
  }
}

class Person {
public:
  Person(string name, int age)
  {
    this->m_Name = name;
    this->m_Age = age;
  }
  //重载==
  bool operator==(const Person& p)
  {
    if (this->m_Name == p.m_Name && this->m_Age == p.m_Age)
    {
      return true;
    }
    return false;
  }

public:
  string m_Name;
  int m_Age;
};

void test02() {

  vector<Person> v;

  //创建数据
  Person p1("aaa", 10);
  Person p2("bbb", 20);
  Person p3("ccc", 30);
  Person p4("ddd", 40);

  v.push_back(p1);
  v.push_back(p2);
  v.push_back(p3);
  v.push_back(p4);

  vector<Person>::iterator it = find(v.begin(), v.end(), p2);
  if (it == v.end())
  {
    cout << "没有找到!" << endl;
  }
  else
  {
    cout << "找到姓名:" << it->m_Name << " 年龄: " << it->m_Age << endl;
  }
}

总结: 利用find可以在容器中找指定的元素,返回值是迭代器

5.2.2 find_if

功能描述: