10/10/26 17:37:27
但し逆反復子を使った場合はこういう感じで素直な結果じゃないので注意
class Value : public std::unary_function<int, bool> {
int val;
public:
Value(int i) : val(i) {}
bool operator()(int i) const {
return i == val;
}
};
int main()
{
int a[] = {10, 24, 21, 42, 63, 31, 73, 25, 12};
std::vector<int> vi;
for (int i = 0; i < static_cast<int>(sizeof(a) / sizeof(a[0])); i++)
vi.push_back(a[i]);
std::vector<int>::const_reverse_iterator vicr = std::find_if(vi.rbegin(), vi.rend(), Value(12));
std::cout << *vicr << std::endl;
std::vector<int>::const_iterator vic = vicr.base();
std::cout << *vic << std::endl;
std::cout << *(vic - 1) << std::endl;
}