是否存在用于保持具有恒定大小的向量的C ++标准类型?例如,像所有元素类型相同的元组,我只需要提供大小作为模板参数?
我希望使用与使用std::vector
时相同/相似的行为,但类型应该像原始数组一样紧凑和高效(因此没有动态分配,没有运行时大小信息等。 )
我更喜欢与C ++ 03兼容的解决方案,因此重复使用std::tuple
并不是我想要的。
以下课程是否符合我的要求?
template<typename T, int N>
struct vec
{
T component[N];
// (+ some logic and accessors like operator[]...)
};
// concrete example:
vec<int,3> myVector;
它与仅仅T myVector[N]
(具体示例int myVector[3]
)有什么不同?因为这是我目前正在做的事情,但我遇到了一些问题,因为原始数组只是“指针”(+大小信息),不能用作返回值,也不能真正按值传递(没有深层复制)。
答案 0 :(得分:10)
C ++ 11有std::array
;这与你写的基本相同。
对于C ++ 03,使用基本上与boost::array
兼容的std::array
。