常量大小的矢量类?

lee*_*mes 2 c++ c++03

是否有C++标准类型用于保持具有恒定大小的向量?例如,像所有元素类型相同的元组之类的东西,所以我只需要提供大小作为模板参数?

我希望有与使用时相同/相似的行为std::vector,但类型应该像原始数组一样紧凑和高效(因此没有动态分配,没有运行时大小信息等)

我更喜欢兼容C++ 03的解决方案,所以重用a std::tuple不是我想要的.

以下课程是否符合我的要求?

template<typename T, int N>
struct vec
{
    T component[N];

    // (+ some logic and accessors like operator[]...)
};

// concrete example:
vec<int,3> myVector;
Run Code Online (Sandbox Code Playgroud)

它真的不同于T myVector[N](具体例子int myVector[3])吗?因为这是我目前正在做的事情,但我遇到了一些问题,因为原始数组只是"指针"(+大小信息),不能用作返回值,也不能真正按值传递(没有深拷贝发生).

MSa*_*ers 10

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

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