常数大小的向量类

Constant-sized vector class?

本文关键字:向量 常数大      更新时间:2023-10-16

是否有一个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])有区别吗?因为这就是我目前正在做的事情,但我遇到了一些问题,因为原始数组"只是指针"(+大小信息),不能用作返回值,也不能真正通过值传递(没有深度复制发生)。

c++ 11有std::array;这和你写的基本一样。

对于c++ 03,使用boost::array, std::array基本兼容