"sizeof(some_vector[0])"是否有效

Is `sizeof(some_vector[0])` valid?

本文关键字:quot 有效 是否 sizeof some vector      更新时间:2023-10-16

对于查找矢量中元素大小的通用方法,这有效吗:

std::vector<float> some_vector;
int size = sizeof(some_vector[0]);

或者这会导致问题,因为some_vector[0]可能是空的?

我想这是在编译时评估的,但它符合标准吗

sizeof运算符用于未赋值的表达式。所以你可以用这个表达式来确定向量元素的大小。

来自C++标准(5.3.3尺寸)

1 sizeof运算符产生对象中的字节数其操作数的表示形式。操作数是表达式,它是未赋值的操作数(第5条),或带括号的类型id。sizeof运算符不应应用于表达式具有函数或不完整类型的枚举类型在所有枚举器都被固定之前,基础类型是不固定的声明,到此类类型的带括号的名称,或到glvalue指定位字段。sizeof(char)、sizeof(带符号的char)和sizeof(无符号字符)为1。sizeof的结果应用于任何其他基本类型(3.9.1)是定义实现的。[注:在特别是sizeof(bool)、sizeof(char16_t)、sizeof(char32_t),以及sizeof(wchar_t)是实现定义的。75——尾注][注:见1.7用于字节的定义,3.9用于对象的定义代表--尾注]