2010-08-11 51 views
0

下面的程序不斷崩潰,我無法弄清楚什麼是錯的。看來,v是有點不主函數可用..C++返回向量,不知道有什麼問題

#include <iostream> 
#include <vector> 

using namespace std; 

vector<string> *asdf() 
{ 
    vector<string> *v = new vector<string>(); 
    v->push_back("blah"); 
    v->push_back("asdf"); 
    return v; 
} 

int main() 
{ 
    vector<string> *v = NULL; 
    v = asdf(); 

    for (int i=0; i<(v->size()); v++) { 
     cout << (*v)[i] << endl; 
    } 

    delete v; 

    return 0; 
} 
+0

洛爾最愚蠢的錯誤不斷我猜的原因,THX的幫助! – Nils 2010-08-11 08:23:36

+0

你應該擺脫這個代碼中的動態分配,沒有理由。 – GManNickG 2010-08-11 17:03:16

+0

那麼這只是一個愚蠢的例子。 – Nils 2010-08-12 08:09:33

回答

7

你想:

for (int i=0; i<(v->size()); i++) { 

你的代碼是遞增的指針,而不是指數。這是儘可能避免動態分配內容的一個很好的理由。

+3

使用迭代器甚至更可取IHMO – 2010-08-11 08:23:04

+3

@Little Depends - 對於向量,運算符[]通常更短,更清晰,甚至可以更快一點。 – 2010-08-11 08:24:46

+0

它也可能比較慢。例如,如果運行時在某些版本中默認執行像MSVC一樣的邊界檢查。 – jalf 2010-08-11 12:13:39

3

你應該改變v ++爲i ++

相關問題