常量大小的矢量类?

时间:2013-01-12 18:10:58

标签: c++ c++03

是否存在用于保持具有恒定大小的向量的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])有什么不同?因为这是我目前正在做的事情,但我遇到了一些问题,因为原始数组只是“指针”(+大小信息),不能用作返回值,也不能真正按值传递(没有深层复制)。

1 个答案:

答案 0 :(得分:10)

C ++ 11有std::array;这与你写的基本相同。

对于C ++ 03,使用基本上与boost::array兼容的std::array