请考虑
int array[5]{};
std::cout << std::size(array) << std::endl;
这将给我结果为5。
int array[5]{};
std::cout << sizeof(array) << std::endl;
这将给我结果为20。
为什么呢?size和sizeof有什么区别?
std::size
返回数组元素的数量。sizeof
是一个运算符,返回对象在内存中占用的字节数。在您的情况下,int
占用 4 个字节,因此 sizeof
返回的值比 std::size
大 4 倍。
参考资料:
有一个旧技巧可以使用sizeof
计算数组元素的数量:
int arr[] = {1, 2, 3, 4, 5};
size_t arr_size = sizeof(arr)/sizeof(arr[0]);
但在现代C++中,这绝不应该使用,而应该使用std::size
。
sizeof(arr)/sizeof(arr[0])
和static inline
一样,属于现代C++的范畴。 - 303
std::size
是constexpr
的,它似乎取代了sizeof
。我们什么时候应该使用sizeof
而不是std::size
?有哪些优缺点? - 303sizeof
了,快速搜索也不会有什么坏处。不确定我当时到底在问什么。 "走开,这里没什么好看的" :D - 303