所以我想创建一个包含100个元素的向量,然后将第一个元素分配给1,将第二个元素分配给2,依此类推。然后以相反的顺序输出这个向量,所以100,99,98等等。 这就是我所拥有的,它一直输出0,任何帮助将不胜感激。
int main()
{
vector<int>numbers(100);
int i = 0;
for (i; i < 100; ++i)
{
int j = i + 1;
numbers.push_back(j);
cout << numbers[i] << endl;
}
}
答案 0 :(得分:3)
您可以使用reverse iterator:
vector<int> numbers(100);
for( auto it= numbers.rbegin(); it != numbers.rend(); ++it)
{
std::cout<< *it<<" ";
}
答案 1 :(得分:2)
std::vector<int> myVector;
for (int i = 0; i < 100; ++i)
{
myVector.push_back(i);
}
std::vector<int>::reverse_iterator riter = myVector.rbegin();
while (riter != myVector.rend())
{
std::cout << *riter << std::endl;
++riter;
}
你可以在这里使用反向迭代器。
答案 2 :(得分:0)
假设您有一个名为vector<int>
的{{1}},代码应如下所示:
numbers
除之外,由于整数下溢(for (vector<int>::size_type i = numbers.size() - 1; i >= 0; --i)
{
std::cout << numbers[i] << std::endl;
}
是无符号的,因此它永远不会小于0;循环继续永远)。所以使用像其他答案建议的迭代器:
vector::size_type
请注意,StackOverflow在此解决方案中突出显示单词for (auto iterator = numbers.rbegin(); iterator != numbers.rend(); ++iterator)
{
std::cout << *iterator << std::endl;
}
,就好像它内置于语言或其他内容中一样。如果您的代码中包含以下行,那么它将是正确的(并且此解决方案将被破坏):
iterator
这是不执行此类操作的另一个原因:它污染了默认命名空间,您无法确定是否使用了保留字。
答案 3 :(得分:0)
试试这个:
int main()
{
vector<int>numbers;
int i = 0;
for (int i=1; i <= 100; ++i)
{
numbers.push_back(i);
}
for(int i=100;i>0;--i)
{
cout << numbers[i-1] << endl;
}
}