`sizeof(some_vector [0])`有效吗?

时间:2017-02-10 09:21:05

标签: c++ c++11 vector sizeof

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

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

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

我想这无论如何都会在编译期间进行评估,但它是否符合标准?

1 个答案:

答案 0 :(得分:2)

sizeof运算符与未评估的表达式一起使用。因此,您可以使用此表达式来确定向量元素的大小。

来自C ++标准(5.3.3 Sizeof)

  

1 sizeof运算符产生对象中的字节数   表示其操作数。操作数是表达式,   这是一个未评估的操作数(第5条),或带括号的   TYPE-ID。 sizeof运算符不应用于表达式   具有函数或不完整类型的枚举类型   基础类型在其所有枚举器之前都没有固定   声明,这些类型的括号名称,或glvalue   指定一个字段。 sizeof(char),sizeof(signed char)和   sizeof(unsigned char)是1. sizeof的结果应用于任何其他   基本类型(3.9.1)是实现定义的。 [注意:在   特别是,sizeof(bool),sizeof(char16_t),sizeof(char32_t)和   sizeof(wchar_t)是implementation-de fi ned.75 -end note] [注意:见1.7   用于定义对象的字节和3.9的定义   表示。 - 后注]