如何解决循环在不应该的地方终止程序
我正在练习,并且由于某种原因 selection == p 终止我的程序,如果向量有任何内容。我做错了什么?
我用 for 和 while 循环都试过了,结果是一样的 :(
do
{
cout << "Enter your choice: ";
cin >> selection;
if (selection == 'p' || selection == 'P')
{
if (numbers.size() == 0)
{
cout << "[] The vector is empty" << endl << endl;
}
else
{
cout << "[ ";
int i = 0;
while (i <= numbers.at(i))
{
cout << numbers.at(i) << ' ';
i++;
}
// for (int i = 0; i <= numbers.size(); i++)
// cout << numbers.at(i) << ' ';
cout << "]" << endl;
}
}
} while (selection != 'q' && selection != 'Q');
解决方法
对于初学者来说,这些循环
while (i <= numbers.at(i))
{
cout << numbers.at(i) << ' ';
i++;
}
和
for (int i = 0; i <= numbers.size(); i++)
不等价。
第一个循环中的条件没有意义。
第二个循环中的条件调用未定义的行为,因为索引 i
可能不等于 tp numbers.size()
。
你需要写
for ( size_t i = 0; i < numbers.size(); i++ )
这是一个演示程序。
#include <iostream>
#include <vector>
int main()
{
std::vector<int> numbers = { 1,2,3,4,5 };
std::cout << "[ ";
for ( size_t i = 0; i < numbers.size(); i++ )
{
if ( i ) std::cout << ",";
std::cout << numbers[i];
}
std::cout << " ]\n";
return 0;
}
程序输出为
[ 1,5 ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。