Заполнение стандартного вектора - PullRequest
0 голосов
/ 07 августа 2010

Я не могу понять, почему вектор пуст после заполнения.

Код:

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почему?

Ответы [ 2 ]

5 голосов
/ 07 августа 2010

Эти строки - ваша проблема:

    if (temp  == "-1")
       return false
    else
       return true;

    int res = atoi(temp.c_str());
    array.push_back(res);

В случае правильного ввода вы возвращаете true из вашего fillArray метода, прежде чем фактически вызовете push_back со значением на вашем векторе.

0 голосов
/ 07 августа 2010
int res = atoi(temp.c_str());
array.push_back(res);

никогда не достигается в вашем методе fillArray, потому что if возвращает true или false

...