gpt4 book ai didi

c++ - 迭代器或 reverse_iterator 的一个变量?

转载 作者:可可西里 更新时间:2023-11-01 18:40:05 28 4
gpt4 key购买 nike

<分区>

我想在 for 循环中迭代一些 std::vector,但根据某些条件, vector 应该向前或向后迭代。我想,我可以通过使用普通迭代器或像这样的反向迭代器轻松地做到这一点:

#include <iostream>
#include <vector>
using namespace std;

int main() {
vector<int> vec{0, 1, 2, 3, 5, 6, 7};
bool reverse = true;
std::iterator<random_access_iterator_tag, int> it, end_it;

if (reverse) {
it = vec.rbegin();
end_it = vec.rend();
} else {
it = vec.begin();
end_it = vec.end();
}

for (; it != end_it; it++) {
cout << *it << ", ";
}
return 0;
}

但不幸的是 vector::begin()vector::rbegin() 似乎没有使用相同的父类。有没有另一种方法可以做我想做的事,而无需在 if-else-结构中有两个不同的循环?当然,我可以为循环体创建一个函数/lambda 或使用一些索引算法,但有没有更优雅的方法?

编译器提示赋值 it = vec.begin() 因为它们是不同的类型。 gcc 和 VC++ 输出不同的错误并且似乎对 vector::begin 的返回值使用不同的类型。

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