gpt4 book ai didi

c++ - 列表中倒数第二个元素的迭代器

转载 作者:IT老高 更新时间:2023-10-28 22:19:03 32 4
gpt4 key购买 nike

我目前有以下 for 循环:

for(list<string>::iterator jt=it->begin(); jt!=it->end()-1; jt++)

我有一个字符串列表,它在一个更大的列表中(list<list<string> >)。我想遍历内部列表的内容,直到到达倒数第二个元素。这是因为我已经处理了final元素的内容,没有理由再处理了。

但是,使用 it->end()-1无效 -- 我不能使用 -运营商在这里。虽然我可以使用 --运算符,这将在每个循环中递减这个最终迭代器。

我相信 STL 列表是一个双向链表,所以从我的角度来看,应该可以做到这一点。

建议?提前致谢

最佳答案

使用标准库的必备推荐:

std::for_each(lst.begin(), --lst.end(), process);

如果您不想麻烦地创建一个仿函数 [我几乎从不这样做],并且您不能使用反向迭代器,请将结束检查提升到循环之外:

for(iterator i = lst.begin(), j = --lst.end(); i != j; ++i) {
// do
// stuff
}

或者,您可以相信优化器会认识到它不必不断重新创建结束条件,并自行执行提升。这有多可靠取决于列表实现、循环代码的复杂程度以及优化器的好坏。

无论如何,只做最容易理解的事情,做完之后再担心性能。

关于c++ - 列表中倒数第二个元素的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430960/

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