相关疑难解决方法(0)

如何从C++函数返回数百个值?

在C++中,每当函数创建许多(数百或数千)个值时,我曾经让调用者传递一个数组,然后我的函数用输出值填充:

void computeValues(int input, std::vector<int>& output);
Run Code Online (Sandbox Code Playgroud)

因此,该函数将output使用它计算的值填充向量.但这并不是真正优秀的C++风格,正如我现在意识到的那样.

以下函数签名更好,因为它不承诺使用a std::vector,但可以使用任何容器:

void computeValues(int input, std::insert_iterator<int> outputInserter);
Run Code Online (Sandbox Code Playgroud)

现在,来电者可以与一些人打电话inserter:

std::vector<int> values; // or could use deque, list, map, ...
computeValues(input, std::back_inserter(values));
Run Code Online (Sandbox Code Playgroud)

同样,我们不承诺std::vector专门使用,这很好,因为用户可能只需要std::set等等的值(我应该传递iteratorby值还是引用?)

我的问题是:这是insert_iterator正确的还是标准的方式吗?还是有更好的东西?

编辑:我编辑了这个问题,以明确我不是在谈论返回两个或三个值,而是数百或数千.(想象一下,您已经返回在某个目录中找到的所有文件,或图表中的所有边缘等)

c++ iterator stl vector return-value

4
推荐指数
2
解决办法
1897
查看次数

通过引用获取std :: list

我有一个Poly3DC++类,它有一个唯一的成员:list<Point_3>

using namespace std;

struct Poly3D
{
public:
    Poly3D(const list<Point_3> &ptList);


private:
    list<Point_3> ptList;

};
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何通过引用获取(在C#意义上),以便每次访问时都返回相同的副本Poly3D.ptList

c++

2
推荐指数
1
解决办法
2944
查看次数

标签 统计

c++ ×2

iterator ×1

return-value ×1

stl ×1

vector ×1