C++11:返回一个数组

标签 c++ collections stl c++11 containers

我目前正面临一个与 STL 容器有关的有趣情况。 我有一个方法应该根据参数返回不同的静态对象数组。所述对象的类型为数组_>。

之所以有下划线,是因为它们不都是相同大小的数组。由于数组如此整齐地包装并且数组的大小不变,我希望不要被迫将数组转换为 vector ,因为现在不仅初始化非常整洁,而且我还发现数组是我想要的确切结构,而一个可调整大小的结构将是开销和矫枉过正。

我有机会实现我想要的吗?如果不是,是否有比使用 vector 更清洁的解决方案?

最佳答案

是否可以在编译时根据参数计算返回数组的大小?如果是这样,那么您可以使用模板为 _ 提供正确的值。例如,如果返回数组的长度与某个参数数组的长度相同,那么您可以这样做:

template<int N>
array<SomeClass, N> myFunc(array<Foo, N> someArg);

或者,如果您始终知道调用它的站点返回数组的正确大小(在编译时),您可以这样做:

template<int N>
array<SomeClass, N> myFunc();

并将其命名为:

array<SomeClass, 5> = myFunc<5>();

如果没有,那么您可能不得不使用 vector 。

关于C++11:返回一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10777990/

相关文章:

c++ - __cdecl 强制前缀带下划线

c++ - vec.erase(vec.end());合法的?

c++ - 从 const 映射中读取的惯用 C++

c++ - Visual c++ "for each"可移植性

c++ - boost::spirit 并生成不同的节点

c++ - 当 RVO/NRVO 启动时对象是否被复制?

c++ - B-Tree如何进行中序遍历?

java - 如何从列表中删除重复项?

java - 性能:从 HashMap.values() 创建一个 ArrayList

javascript - 当代码被缩小时,我的 BackboneJS 集合突然无法在 Chrome 中工作