如何在 C++ 中 return 向量指针?

How to return a vector pointer in C++?

我正在尝试 return 从函数中指向 std::vector 的指针,如下所示:

std::vector<int>* find_solution(const std::vector<int>& list)

我尝试了以下解决方案:

const std::vector<int>* find_solution(const std::vector<int>& list)

vector<int>* find_solution(const std::vector<int>& list)
{
    //populate solution_list
    std::vector<int>* return_list = new std::vector<int>;
    return_list = &solution_list;
}

其中 solution_list 是我想 return 指向的局部向量的名称。它们都不起作用,returned 向量始终为空。任何提示将不胜感激,但请记住,调用此函数的程序需要能够管理内存中的向量。换句话说,returning 矢量对象不是一个可行的解决方案。谢谢!

vector<int>* find_solution(const std::vector<int>& list)
{
    //populate solution_list
    std::vector<int>* return_list = new std::vector<int>;
    return_list = &solution_list;
}

您必须使用分配的向量:

vector<int>* find_solution(const std::vector<int>& list)
{
    std::vector<int>* solution_list = new std::vector<int>;

    //populate solution_list

    return solution_list;
}

当您 return_list = &solution_list; 时,您覆盖了指向已分配内存的唯一指针,因此它永远不会被释放。此外,您将 return 函数结束时消失的局部变量的地址。

但是您不必一开始就动态分配一个 std::vector<int>,因为它只包含几个 size_t 和一个指向数据的指针。只是:

vector<int> find_solution(const std::vector<int>& list)
{
    std::vector<int> solution_list;

    //populate solution_list

    return solution_list;
}