find_if返回的是iterator还是const_iterator
时间: 2023-09-12 15:06:39 浏览: 176
`find_if` 函数返回的是一个迭代器,其类型取决于传入的参数类型。如果传入的是一个 `const` 容器或迭代器,则返回的是一个 `const_iterator`;否则返回的是一个普通的 `iterator`。
例如,以下代码中 `find_if` 函数返回的是一个 `const_iterator`:
```c++
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
const std::vector<int> v = {1, 2, 3, 4, 5};
auto it = std::find_if(v.cbegin(), v.cend(), [](int x) {
return x % 2 == 0;
});
if (it != v.cend()) {
std::cout << "The first even number is " << *it << std::endl;
} else {
std::cout << "No even numbers were found" << std::endl;
}
return 0;
}
```
输出结果为:
```
The first even number is 2
```
需要注意的是,如果使用 `const_iterator` 迭代器,则不能修改迭代器所指向的元素。如果要修改元素,则应该使用普通的 `iterator`。
阅读全文