在我正在编写的程序中,我需要经常使用长度为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