c ++为什么不存在像length(array)这样的东西?

Aur*_*rus 14 c++ arrays language-design

好吧,我不认为它真的很重要,但由于程序必须存储长度因为删除[]无论如何,为什么我们不能得到这个"存储信息"?

Pot*_*ter 9

实现只需要存储长度,并且通常只有,如果类型不是简单的可破坏的(即,它需要生成对析构函数的调用)并且数组是使用new []运算符创建的.

由于阵列类型的属性与数组的大小无关,因此将长度"cookie"称为私有实现细节更为优雅.

要获得完整数组对象(不仅仅是指针)的长度,您可以使用std::extent< decltype( arr ) >::valuestd::end( arr ) - std::begin( arr ).

使用new[]带有析构函数类是一个代码味道.考虑一下std::vector.开销与原始new[](考虑所有需要分配的字节,无论它们在哪里)都是一个指针的字节值,其好处是无数的.