gpt4 book ai didi

c++ - 从第二个(或第 n 个)项开始循环 C++ 迭代器

转载 作者:IT老高 更新时间:2023-10-28 23:09:45 25 4
gpt4 key购买 nike

我正在寻找一种可读、优雅的方式在 C++ 中执行以下操作,此处以 Python 显示:

for datum in data[1:]:
# do work.

有问题的数据上的迭代器可能不支持随机访问迭代器,所以我不能只使用:

for (mIter = data.begin() + 1; mIter != data.end(); mIter++)

我想出的最好的如下:

iterable::iterator mIter = data.begin();
for (mIter++; mIter != allMjds.end(); mjdIter++) {
// do work.
}

它不是太长,但它几乎不是说明性的 - 乍一看它实际上看起来像是一个错误!

我猜另一种解决方案是使用“第 n 个元素”辅助函数。有没有更简洁的方法?

最佳答案

您可以使用 std::next(iter, n)对于线性时间提前。您也可以使用标准 std::advance算法,尽管它使用起来并不简单(它通过非常量引用获取迭代器并且不返回它)。

例如,

for (mIter = std::next(data.begin()); mIter != data.end(); ++mIter)

或者,

mIter = data.begin();
std::advance(mIter, 1);
for (; mIter != data.end(); ++mIter)

请注意,您必须确保 data.size() >= 1,否则代码将以灾难性方式失败。

关于c++ - 从第二个(或第 n 个)项开始循环 C++ 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4210470/

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