填充标准矢量

时间:2010-08-07 16:17:22

标签: c++ vector std fill

我无法理解为什么矢量在填充后会变空。

代码是:

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 个答案:

答案 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