2010-08-11 53 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 ++

相关问题