我目前正面临一个与 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/