我正在尝试获取已在列表中分配的数据,如果数据<= -1,则该列表必须显示为空,否则打印分配的数据。
但是,问题是我的代码打印列表为空。
我认为它应该打印[ +2 ]
而不是空白列表。
码:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> number{+2};
char selection{};
do{
cout << "\nMain Menu" << '\n';
cout << "P - Print numbers" << '\n';
cout << "Q - Quite the program" << '\n';
cout << "------------------------" << '\n';
cout << "Enter your Choice: ";
cin >> selection;
if(selection == 'p' || selection == 'P')
{
if (number.size() <= -1)
cout << "[] - The list is Empty" << '\n';
else{
cout << " [ ";
for(int num:number)
cout << num;
cout << " ] " << '\n';
}
}
}while (selection != 'q' && selection != 'Q');
return 0;
}
std::vector::size()
返回一个无符号的整数(因为向量的大小永远不能为负,并且如果返回一个有符号的整数,则它不能指的是较大的大小范围)。当您将有符号整数(如-1)与无符号整数进行比较时,有符号整数将转换为无符号整数以进行比较。-1转换为无符号整数是最大的无符号整数。这实际上意味着您正在检查大小是否不大于最大可能大小,这始终是正确的。
无论如何,如果向量实际上为空,则其大小将为零。那就是您应该比较的东西,而不是-1。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句