c++ 为什么没有长度(数组)之类的东西?

标签 c++ arrays language-design

好吧,我认为这并不重要,但由于程序必须存储长度,因为 delete[] 反正我们为什么不能得到这个“存储的信息”?

最佳答案

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

由于数组类型的属性与数组的大小无关,因此将长度“cookie”简单地称为私有(private)实现细节更为优雅。

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

使用 new[]带有析构函数的类是代码气味。考虑std::vector反而。开销与原始 new[] (考虑到需要分配的所有字节,无论它们在哪里)是一个指针的字节数,好处是数不胜数的。

关于c++ 为什么没有长度(数组)之类的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11264032/

相关文章:

c++ - 更改枚举类型 C++ 的数据大小

java - 将结果集从 SQL 数组转换为字符串数组

java - 为什么 Java 允许在任意语句上标记中断?

c++ - 如何使用 std::bsearch 的成员函数

c++ - 在桌面上创建一个按钮

c++ - 复制赋值运算符应该按 const 引用还是按值传递?

Java 静态导入

java - 有没有办法在二维数组中删除特定行?

c++ - 在 C++ 中,将 char 数组传递给 super 会出错吗?

iterator - 为什么Lua的迭代器是三元组?