我无法理解为什么矢量在填充后会变空。
代码是:
bool fillArray (vector<int> &array)
{
string temp;
getline(cin, temp);
if (temp == "-1")
return false
else
return true;
int res = atoi(temp.c_str());
array.push_back(res);
}
void showArray(const vector<int> array)
{
for (int i = 0; i < array.size(); i ++)
cout << array[i] << " ";
}
int main(int argc, char** argv)
{
vector<int> array;
while (fullArray (array))
{}
showArray(array);
return 0;
}
当我输入-1时,循环中断但向量的大小为0,为什么?
答案 0 :(得分:5)
这些问题是您的问题:
if (temp == "-1")
return false
else
return true;
int res = atoi(temp.c_str());
array.push_back(res);
如果输入效果良好,则在实际使用向量中的值调用true
之前,您将从fillArray
方法返回push_back
。
答案 1 :(得分:0)
int res = atoi(temp.c_str());
array.push_back(res);
在fillArray方法中永远不会达到,因为if返回true或false