int main()
{
std::vector<int> x { 0, 1, 2, 3, 4, 5 };
// finds the reverse iterator pointing at '2'
// but using base() to convert back to a forward iterator
// also 'advances' the resulting forward iterator.
// in effect, inverting the sense of the predicate to 'v >= 3'
auto iter = std::find_if(std::make_reverse_iterator(x.end()),
std::make_reverse_iterator(x.begin()),
[](auto& v) { return v < 3; }).base();
std::copy(iter,
x.end(),
std::ostream_iterator<int>(std::cout, ", "));
}
4条答案
按热度按时间bq3bfh9z1#
使用reverse iterators,如下所示:
Live demo。
对于C++20范围,这将成为
Live demo。
8wigbo562#
这是如何使用反向迭代器完成的:
xxe27gdn3#
只有一件事。如果你想找到包含 predicate 元素的范围的尾端,请小心使用 predicate :
结果:
7gcisfzg4#
ZenXml: