std::find
std::find 用于在范围内查找与指定值相等的第一个元素。
ForwardIt std::find(ForwardIt first, ForwardIt last, const T& value);
- first 和 last 指定要搜索的范围。
- value 是要查找的值。
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = std::find(vec.begin(), vec.end(), 3);
if (it != vec.end()) {
std::cout << "Element found: " << *it << '\n';
} else {
std::cout << "Element not found\n";
}
return 0;
}
std::find_if
std::find_if 用于在范围内查找第一个满足指定条件的元素。
ForwardIt std::find_if(ForwardIt first, ForwardIt last, UnaryPredicate p);
- first 和 last 指定要搜索的范围。
- p 是一个一元谓词(返回 bool 的函数或函数对象)
#include <algorithm>
#include <iostream>
#include <vector>
bool is_even(int n) {
return n % 2 == 0;
}
int main() {
std::vector<int> vec = {1, 3, 5, 8, 11};
auto it = std::find_if(vec.begin(), vec.end(), is_even);
if (it != vec.end()) {
std::cout << "First even element found: " << *it << '\n';
} else {
std::cout << "No even element found\n";
}
return 0;
}
std::find_if_not
std::find_if_not 用于在范围内查找第一个不满足指定条件的元素。
ForwardIt std::find_if_not(ForwardIt first, ForwardIt last, UnaryPredicate p);
- first 和 last 指定要搜索的范围。
- p 是一个一元谓词(返回 bool 的函数或函数对象)。
#include <algorithm>
#include <iostream>
#include <vector>
bool is_odd(int n) {
return n % 2 != 0;
}
int main() {
std::vector<int> vec = {1, 3, 5, 8, 11};
auto it = std::find_if_not(vec.begin(), vec.end(), is_odd);
if (it != vec.end()) {
std::cout << "First non-odd element found: " << *it << '\n';
} else {
std::cout << "All elements are odd\n";
}
return 0;
}
总结
- std::find: 查找与指定值相等的第一个元素。
- std::find_if: 查找第一个满足指定条件的元素。
- std::find_if_not: 查找第一个不满足指定条件的元素。