我目前正面临一个使用 STL 容器的有趣情况。我有一个方法应该根据参数返回不同的静态对象数组。所述对象的类型为数组<SomeClass, _ >。
下划线的原因是它们并非都是相同大小的数组。由于数组包装得非常整齐而且数组的大小没有改变,我希望不要被迫将数组转换为向量,因为现在不仅初始化非常整洁,而且我还发现数组是我想要的确切结构,而可调整大小的结构将是开销和矫枉过正。
我有机会实现我想要的吗?如果没有,有没有比使用向量更清洁的解决方案?
我目前正面临一个使用 STL 容器的有趣情况。我有一个方法应该根据参数返回不同的静态对象数组。所述对象的类型为数组<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>
可以作为array<T,N>
任何N
.