所以我这样做的基本思路是这种循环:
std::array<int,10> t{};
for (int k = t.size()-1; k >= 0; k--)
cout << t[k] << " ";
问题是.size()方法返回一个std :: array :: size_type,根据我的阅读,该值可能大于一个int。
问题是size_type是无符号的,所以当我这样做时:
for (auto k = t.size()-1; k >= 0; k--)
cout << t[k] << " ";
因为k不能为负数,所以它无限循环。那么如何使用size_type变量迭代std :: array或std :: vector backwars?
答案 0 :(得分:7)
如果可以使用C ++ 11或更高版本,则可以/应该使用迭代器。这样的舒缓:
#include <vector>
#include <iostream>
int main() {
std::vector<int> v = {1,2,3,4,5};
for(auto it = v.rbegin(); it != v.rend(); ++it) {
std::cout << *it << '\n';
}
return 0;
}
实时示例here。
答案 1 :(得分:6)
如果由于某种原因迭代器不起作用,并且由于某些原因您必须使用索引:
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity=" ....