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 ++返回向量,无法弄清楚出了啥问题的主要内容,如果未能解决你的问题,请参考以下文章

Python 请求基本命令返回错误 - 出了啥问题?

C++ - 无法从函数返回向量

从 lapply 返回匿名函数 - 出了啥问题?

matlab中text 显示变量

我无法弄清楚我的代码有啥问题

未定义的引用,继承问题 - C++ [重复]