为什么C的数组必须要指明尺寸大小?
一、为什么C的数组必须要指明尺寸大小
不指明尺寸大小就无法开辟内存。无论是在堆上还是栈上,为了实现常数时间的随机访问,数组元素都必须线性的分布在一段内存里。
如果想实现动态数组的话,就意味着编译器必须要插入额外的代码来实现动态的重分配内存和转移元素,这会给程序带来额外的性能损耗。
c++的基本设计理念之一就是不引入任何没有必要的cost?;谎灾绦蛟辈挥Ω茫ɑ蛘呔】赡苌俚模┪魏蚊挥惺褂玫奶匦猿械P阅芸?。
再者,一个可以动态resize/reallocate的数组对于裸内存和指针非常不友好。频繁的数组操作会导致一个指针很难被固定在原地。这会使得很多复杂的直接操作内存的编程技巧难以实现。
所以通常的实践都是如果你确定不需要任何动态数组特性,就用原生数组类型。
需要的话用std::vector。
延伸阅读:
二、二叉树和红黑树
二叉树:对于表提供自增整形字段作为建立索引的列,那子元素总是添加去了右侧,导致左子树一直为空,那么查找时就完全退化成了没加索引那样了。红黑树:红黑树解决了二叉树不平衡的问题。然为什么要费力保持树的平衡性?是因为树的查找性能取决于树的高度,让树尽可能平衡,就能降低树高。但因为其父节点只能存在两个子节点,那在数据量大的时候,深度也很大。
相关推荐HOT
更多>>
什么是工具类APP?
一、生活便利工具日常使用工具:如计算器、闹钟、天气预报等,为用户提供日常所需的基础服务。旅行助手:例如地图、导航、旅游攻略等,助你出行...详情>>
2023-10-15 21:46:45
什么是计算机视觉?
一、图像和视频处理计算机视觉的基础图像捕获和预处理:使用各种传感器和设备捕获数字图像,并通过预处理技术改善图像质量。特征提取和分析:从...详情>>
2023-10-15 20:59:59
什么是字节码?
1、字节码的定义与功能字节码是一种低级别的编程语言,通常用于虚拟机上的编译和执行。它作为源代码和机器码之间的中介,有以下功能:跨平台性...详情>>
2023-10-15 20:43:39
flutter为什么不使用kotlin作为开发语言?
Flutter是Google开发的一款开源的UI工具包,用于构建在多个平台上共享同一代码库的应用程序。尽管Kotlin是一种强大且受欢迎的语言,但Flutter并...详情>>
2023-10-15 19:40:04