对于查找向量中元素大小的通用方法,这是否有效:
std::vector<float> some_vector;
int size = sizeof(some_vector[0]);
或者这会导致问题,因为some_vector [0]可能为空?
我想这无论如何都会在编译期间进行评估,但它是否符合标准?
答案 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的定义 表示。 - 后注]