0

ベクトルがいっぱいになった後に空になる理由がわかりません。

コードは次のとおりです。

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 になるのはなぜですか?

4

2 に答える 2

5

これらの行はあなたの問題です:

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

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

適切な入力の場合、ベクトルの値を実際に呼び出す前に、メソッドtrueから戻ってきます。fillArraypush_back

于 2010-08-07T16:21:07.450 に答える
0
int res = atoi(temp.c_str());
array.push_back(res);

ifがtrueまたはfalseを返すため、fillArrayメソッドで到達することはありません。

于 2010-08-07T16:21:29.883 に答える