我不会担心的。如果您查看 的接口std::array<T, N>
,它非常小,并且大多数成员函数(基本上为指针操作提供包装器)都是单行的,任何体面的编译器在发布模式优化级别上都将被完全优化掉/内联。
此外,您不必为不使用的东西付费,因为保证不会实例化类模板的未使用的非虚拟成员函数(std::array<T, N>
没有成员函数)。virtual
小标准报价:
14.7.1 隐式实例化 [temp.inst]
11 实现不应隐式实例化不需要实例化的类模板的函数模板、变量模板、成员模板、非虚拟成员函数、成员类或静态数据成员。[...]
还有一些重载的关系运算符==
,<
它们在语义上等同于std::equal
and std::lexicographical_compare
。在实践中,这些运算符也应该根据这些算法来实现(如果他们不这样做,请向您的供应商投诉)。
唯一非常小的担心是一点额外的编译时开销,但代码大小和运行时开销应该为零。
相关但不完全相同:关于 C++ 性能的技术报告对int
围绕内置类型 ( , )的瘦类包装器进行了许多仔细的基准测试double
,发现 2006 年编译器技术的开销接近于零。你可以重复他们的测试来验证这一点std::array<T,N>
。T[N]