Hello, I can't understand why does vector empty after it's filling.
The code is:
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;
}
When I input -1 the cycle breaks but the size of vector is 0, why?
From stackoverflow
-
These lines are your problem:
if (temp == "-1") return false else return true; int res = atoi(temp.c_str()); array.push_back(res);
In the case of good input, you're returning
true
from yourfillArray
method before you actually callpush_back
with the value on your vector.Ockonal : Stupid error =\. Thank you.Philipp : Is that your real code after all? The compiler issues an error because the semicolon after `return false` is missing.Praetorian : I don't understand why everyone seems to re-type their code into SO instead of copy-pasting. Not only is the `;` missing after `return false` but the call within `main()` is to some function called `fullArray()` instead of `fillArray()` -
int res = atoi(temp.c_str()); array.push_back(res);
is never reached in your fillArray Method, because the if returns true or false
0 comments:
Post a Comment