- algorithm[meta header]
- std[meta namespace]
- function template[meta id-type]
namespace std {
template <class InputIterator, class T>
InputIterator find(InputIterator first,
InputIterator last,
const T& value); // (1) C++03
template <class InputIterator, class T>
constexpr InputIterator find(InputIterator first,
InputIterator last,
const T& value); // (1) C++20
template<class ExecutionPolicy, class ForwardIterator, class T>
ForwardIterator find(ExecutionPolicy&& exec,
ForwardIterator first,
ForwardIterator last,
const T& value); // (2) C++17
}
指定された値を検索する。
[first,last)
内のイテレータ i について、*i == value
であるような最初のイテレータを返す。そのようなイテレータが見つからなかった場合は last
を返す。
最大で last - first
回比較を行う
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> v = { 3, 1, 4 };
auto result = std::find(v.begin(), v.end(), 1);
if (result == v.end()) {
std::cout << "not found" << std::endl;
} else {
std::cout << "found: " << *result << std::endl;
}
}
- std::find[color ff0000]
found: 1
template <class InputIterator, class T>
InputIterator find(InputIterator first, InputIterator last, const T& value) {
for ( ; first != last; ++first)
if (*first == value) return first;
return last;
}