如何在 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;
}
我正在尝试 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;
}