gpt4 book ai didi

c++ - 不是从 .begin()ing 迭代一个 STL 容器并环绕

转载 作者:可可西里 更新时间:2023-11-01 15:47:44 27 4
gpt4 key购买 nike

我有一个 std::vector,为了简单起见,让我们说整数。

std::vector<int> ivec;
ivec.push_back(1);
ivec.push_back(2);
... //omitting some push back's 3 to 99
ivec.push_back(100);

迭代的标准方式是已知的

std::map<int>::iterator it;
for( it = ivec.begin(); it != ivec.end(); it++ )
print();

该迭代将打印 1,2,3, ... 100。

我想从预定义的索引开始遍历所有 vector 元素,而不是从 it.begin() 开始。我要打印

3,4,5,6 ... 99, 100, 1, 2

你能在这里分享你的想法吗?

分两步完成可能没问题

for( it = ivec.begin()+index; it != ivec.end(); it++ ) and then (if index !=0)

for ( it = ivec.begin; it = it = ivec.begin() + (index-1); it++)

最佳答案

您可以:

  • 开发一个包装 vector::iterator 的迭代器类并公开您喜欢的行为(特别是:++ 检查 end() 并将其替换为 begin() 并调整其他“边界值”)

  • 从 3 开始填充 vector 并在 100 处换行,以便标准迭代看起来像您想要的那样。

选择取决于 vector 的其他用途以及迭代所需的其他内容。

关于c++ - 不是从 .begin()ing 迭代一个 STL 容器并环绕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8532949/

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