1

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

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

我有机会实现我想要的吗?如果没有,有没有比使用向量更清洁的解决方案?

4

2 回答 2

2

可以在编译时根据参数计算返回数组的大小吗?如果是这样,那么您可以使用模板为_. 例如,如果返回数组与某个参数数组的长度相同,那么您可以执行以下操作:

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

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

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

并将其称为:

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

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

于 2012-05-27T23:37:09.167 回答
0

您始终可以选择编写一个array_view<T>可以作为array<T,N>任何N.

于 2012-05-28T00:28:53.290 回答