在 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/