2

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

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

我更喜欢C++03 兼容的解决方案,所以重用 astd::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])不同吗?因为这就是我目前正在做的事情,但我遇到了几个问题,因为原始数组是“只是指针”(+大小信息),不能用作返回值,也不能真正按值传递(没有发生深拷贝)。

4

1 回答 1

10

C++11 has std::array; which is basically the same as you wrote.

For C++03, use boost::array which is basically compatible to std::array.

于 2013-01-12T18:13:45.110 回答