指向 std::vector 的指针作为输出参数

问题描述 投票:0回答:1

我将一个指向向量的指针作为函数中的输出参数,我不知道这是否是最佳实践:

Status Interface::method(const std::vector<int>** outVec);

我正在为一个类编写一个 API,其中每个函数都返回一个状态。 为此,我需要通过函数参数返回结果。 我不想使用 std::vector 引用,因为这需要用户提供一个空向量,而不是我创建向量并提供它。 有没有更干净的方法?

c++ c++11
1个回答
1
投票

显而易见的解决方案是从函数返回向量。

std::pair<Status,std::vector<int>> method();

struct MethodResult {
     Status status;
     std::vector<int> vect;
};
MethodResult method();

或类似的。

您是对的,使用引用输出参数有缺点,但您的解决方案更糟糕。调用者仍然需要提供双指针:

 std::vector<int>** p;
 method(p);

现在他们面临的问题是当不再需要矢量时如何处理它。是动态分配的吗?如何?为什么?原始指针不应用于拥有资源,也不应用于转移所有权。当

std::vector
已经在为你管理内存并且你可以简单地从函数中返回它时,没有理由打开这个蠕虫罐头。

另请参阅 C++ 核心指南 F20:对于“输出”输出值,更喜欢返回值而不是输出参数

© www.soinside.com 2019 - 2024. All rights reserved.