97.STL-查找算法 find

目录

STL-查找算法find

1.基本用法:

2.查找自定义类型:

3.查找范围:


STL-查找算法find

在C++的STL(标准模板库)中,find 算法用于在指定范围内查找指定值的元素。

功能描述:

  • 查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()

函数原型:

  • find(iterator beg, iterator end, value);
  • // 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置
  • // beg 开始迭代器
  • // end 结束迭代器
  • // value 查找的元素

以下是使用 find 算法的一些基本示例:

1.基本用法:

#include 
#include 
#include 
using namespace std;

int main() {
    vector numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    // 使用 find 查找数字 5
    vector::iterator it = find(numbers.begin(), numbers.end(), 5);

    if (it != numbers.end()) {
        cout << "找到了:" << *it << endl;
    }
    else {
        cout << "未找到" << endl;
    }

    return 0;
}

97.STL-查找算法 find_第1张图片

2.查找自定义类型:

如果你在一个包含自定义类型的容器中查找元素,需要确保自定义类型有相应的比较方式,通常通过重载 == 运算符。

#include 
#include 
#include 
using namespace std;

class Person {
public:
	string name;
	int age;
	Person() = default;
	Person(string n,int a):name(n),age(a){}

	bool operator==(const Person& p) {
		return name == p.name && age == p.age;
	}

	void print_person()const {
		cout << "name:" << name << " age:" << age;
	}
};

void test02() {
	vector p;
	p.push_back(Person("xiaobai", 11));
	p.push_back(Person("xiaohong", 12));
	p.push_back(Person("xiaocheng", 13));
	p.push_back(Person("xiaohuang", 10));
	p.push_back(Person("xiaolv", 9));
	p.push_back(Person("xiaoqing", 12));
	p.push_back(Person("xiaolan", 11));
	p.push_back(Person("xiaozi", 10));

	vector::iterator it=find(p.begin(), p.end(), Person("xiaolv", 9));
	if (it == p.end()) {
		cout << "没有找到这个人" << endl;
	}
	else {
		cout << "找到了这个人"  << endl;
		it->print_person();
	}
}
int main() {
	test02();

	return 0;
}

 97.STL-查找算法 find_第2张图片

 这里的 Person 类重载了 == 运算符,以便在查找时进行比较。

3.查找范围:

你可以指定查找的范围,而不是整个容器。

#include 
#include 
#include 
using namespace std;

int main() {
    vector numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    // 查找范围在前半部分
    vector::iterator it = find(numbers.begin(), numbers.begin() + 5, 3);

    if (it != numbers.end()) {
        cout << "找到了:" << *it << endl;
    }
    else {
        cout << "未找到" << endl;
    }

    return 0;
}

97.STL-查找算法 find_第3张图片

 写在最后:以上就是本篇文章的内容了,感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~   

你可能感兴趣的:(C++,c++,开发语言)