c++ - 返回整个集合的通用方法

标签 c++ templates

在 C++ 中,不使用迭代器将集合返回给客户端代码的最佳方法是什么。

假设迭代器被排除,因为例如集合是远程的。我想要一个函数的签名,该函数以尽可能最有用的形式返回集合。

我所说的“最佳”是指清晰度和通用性之间的最佳权衡。

我的直觉是(其中 result.push_back(obj) 是有效的 C++):

template <typename T>
void getCollection(T& result);

我想知道是否有人有更好的想法,例如也支持插入不支持push_back的容器,或者需要转换集合中的对象。

也许是以下内容?

template <typename Func>
void getCollection(Func f); // applies f to all the objects

最佳答案

迭代器方式是你真正想要的方式。为什么?因为它允许客户将这些数据粘贴到他们需要的任何地方。如您所知,您已经很难决定如何将数据粘贴到容器的末端,因为有不同的方法。有了 OutputIterator,你就不用担心这个问题了。分配并继续前进。

天哪,函数的用户可能希望将数据粘贴在字符串中,如果您使用迭代器方法,这很简单。

关于c++ - 返回整个集合的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3167359/

相关文章:

c++ - fatal error : libxml/xmlmemory. h:没有那个文件或目录

c++ - 试图将部分放在不同的标题中

c++ - 提供适当的 operator<< 和可变模板特化

python - django模板中的模拟方法调用

c++ - std::cin.getline() 与 std::cin

c++ - 如果可能的话制作一个序列

c++ - 为什么C++ 11不允许使用auto进行直接列表初始化

c++ - XOR 加密字符串并将其保存在文本文件中时 PC 发出哔哔声

c++ - 在嵌套类型中保留 volatile

c++ - 函数模板和缩写函数模板之间的等价关系