2010-08-07 101 views
0

我不明白爲什麼矢量在填充後爲空。填充std矢量

的代碼是:

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,爲什麼呢?

+1

showArray'的'參數應該聲明爲const引用(而不是常量的值)。 – Philipp 2010-08-07 16:49:41

回答

5

這些線是你的問題:

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

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

在良好的輸入的情況下,你從你的fillArray方法返回true你居然叫push_back與您的載體前值。

+0

愚蠢的錯誤= \。謝謝。 – Ockonal 2010-08-07 16:35:38

+0

畢竟這是你的真實代碼嗎?編譯器發出錯誤,因爲'return false'後面的分號丟失。 – Philipp 2010-08-07 16:53:29

+0

我不明白爲什麼每個人似乎都將他們的代碼重新輸入到SO而不是複製粘貼。不僅''''在'return false'之後丟失了,而且'main()'中的調用不是'fillArray()',而是一些名爲'fullArray() – Praetorian 2010-08-07 17:12:49

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

在fillArray方法永遠達不到的,因爲如果返回true或false