c++中自定义的类数组类型



在我正在编写的程序中,我需要经常使用长度为3的整数数组,我认为我应该定义一个自定义类型。它们保存的整数在0到2之间,所以int8就足够了。我的目标是避免必须显式检查长度。

我可以这样写:

class MyArr {
int8_t a;
int8_t b;
int8_t c;
}

,但我也希望能够使用[]访问元素,例如,能够写x[0]而不是x.a。最优的方法是什么?

我还想我必须检查值是否合法,即在构造函数中0到2之间。有更好的办法吗?

我认为最好的方法是使用std::array,如果你想要边界检查,你可以使用at()函数而不是operator[]。https://en.cppreference.com/w/cpp/container/array/at

的例子:

#include <array>
std::array<int8_t, 3> data = { 1, 2, 4 };

// Set element 1
data.at(1) = 88;

使用数组。如果需要值语义,请使用std::array。如果您经常使用此类型,并且希望名称比泛型"数组"更有意义,则可以使用类型别名:

// Example with a 3D vector
using vec3D = std::array<std::int8_t, 3>;
vec3D v1, v2; // 3D vectors

最新更新