C ++返回向量,无法弄清楚出了啥问题
Posted
技术标签:
【中文标题】C ++返回向量,无法弄清楚出了啥问题【英文标题】:C++ return vector, can't figure out what's wrongC ++返回向量,无法弄清楚出了什么问题 【发布时间】:2010-08-11 08:17:25 【问题描述】:以下程序不断崩溃,我不知道出了什么问题。似乎 v 在 main 函数中以某种方式不可用..
#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;
【问题讨论】:
我猜是最愚蠢的错误,谢谢帮助! 你应该去掉这段代码中的动态分配,没有理由。 这只是一个愚蠢的例子。 【参考方案1】:你想要:
for (int i=0; i<(v->size()); i++)
您的代码是递增指针,而不是索引。这是尽可能避免动态分配事物的一个很好的理由。
【讨论】:
使用迭代器是更可取的 IHMO @Little Depends - 对于向量 operator[] 通常更短、更清晰,甚至可能更快一点。 它也可能更慢。例如,如果运行时像 MSVC 在某些版本中默认执行的那样执行边界检查。【参考方案2】:你应该把 v++ 改成 i++
【讨论】:
【参考方案3】:v++是原因
【讨论】:
以上是关于C ++返回向量,无法弄清楚出了啥问题的主要内容,如果未能解决你的问题,请参考以下文章