C++11:返回数组

C++11: returning an array

本文关键字:数组 返回 C++11      更新时间:2023-10-16

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

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

有机会实现我想要的吗?如果没有,还有比使用矢量更干净的解决方案吗?

是否可以在

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

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

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

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

并称其为:

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

如果没有,那么您可能必须使用向量。

您始终可以选择编写一个 array_view<T> 类,该类可以充当对任何N array<T,N>的引用。