gpt4 book ai didi

c++ - 使用循环队列和迭代器自动换行

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:42 25 4
gpt4 key购买 nike

下面的代码片段遍历一个 vector 并打印数组中当前值和前一个值之间的差值。有用。此代码在无限循环中循环

    start = 60;
iterator = 0;
std::vector<ushort> m_xPos(600,0); // consists of 600 elements with default 0.

for ( ;; ) {
//If we are at the end of the path vector, we need to reset our iterators
if ( start+iterator) >= m_xPos.size() ) {
start = 0;
iterator = 0;
std::cout << m_xPos.at(0) - m_xPos.at(m_xPos.size() - 1);
}
else {
std::cout << m_xPos.at(start+iterator) - m_xPos.at(start+iterator-(ushort)1);
}
iterator++;

}

如何使用

实现同样的目的
  1. std::vec::iterator?
  2. 循环队列?
  3. 还有其他更简单的方法吗?

最佳答案

您只需要在迭代器到达 m_xPos.end() 时分配 m_xPos.begin() 的东西

auto circularNext = [&m_xPos](auto it) { ++it; return (it == m_xPos.end()) ? m_xPos.begin() : it; };
for (auto first = m_xPos.begin() + 59, second = m_xPos.begin() + 60; ; first = circularNext(first), second = circularNext(second)) {
std::cout << *second - *first;
}

关于c++ - 使用循环队列和迭代器自动换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48222710/

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