gpt4 book ai didi

c++ - 检查迭代器中是否倒数第二

转载 作者:太空狗 更新时间:2023-10-29 19:58:11 24 4
gpt4 key购买 nike

有没有一种干净的方法来检查我当前是否在 C++ 迭代中的倒数第二个元素?如:

for (vector::iterator it = v.begin(); it < v.end(); ++it)
{
if (it points to second to last element)
cout << "at second to last";
}

最佳答案

最简单的方法是将您的迭代器与确实指向倒数第二个的迭代器进行比较。一个简单的方法是:

vector::iterator secondLast = v.end() - 2;

当然假设 v.size() >= 2。但是上面的内容并没有推广到其他容器类型,你可以这样做:

vector::iterator secondLast = (++v.rbegin()).base();

这应该从最后一个元素倒退一步,然后转换为常规(向前)迭代器。这将适用于其他容器类型,例如列表。

或者对于一般解决方案可能更清楚:

vector::iterator secondLast = v.end();
std::advance(secondLast, -2);

同样,这需要大小为 2 和随机访问或双向类型的迭代器。

最后,一个 C++11 解决方案:

auto secondLast = std::prev(v.end(), 2);

关于c++ - 检查迭代器中是否倒数第二,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24836287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com