STL シーケンスから最後の要素を探す

最初の要素を検索するならstd::findが有りますが、後ろから検索するアルゴリズムは標準には有りません。そこでreverse_iteratorを使用してみます。

std::vector<int> v;
v.push_back(10);
v.push_back(20);
std::vector<int>::reverse_iterator ritr;
if ((ritr = std::find(v.rbegin(), v.rend(), 20)) != v.rend()) {
    std::cout << *ritr << std::endl;
    std::vector<int>::iterator p;
    //普通のイテレータも取り出せるが、一つずらす必要有り。
    p = ritr.base();
    --p;
    std::cout << *p << std::endl;
}