循环在不应该终止的地方终止程序
loop terminates program where it shouldn`t
我正在练习,出于某种原因,如果向量有任何内容,选择 == 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, 2, 3, 4, 5 ]
我正在练习,出于某种原因,如果向量有任何内容,选择 == 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, 2, 3, 4, 5 ]