这两种说法有啥区别?
Posted
技术标签:
【中文标题】这两种说法有啥区别?【英文标题】:What's difference between these two statements?这两种说法有什么区别? 【发布时间】:2020-01-22 21:29:07 【问题描述】:这个问题似乎很简单,但我找不到任何答案。那么int Array[10]
和array<int, 10> Array
有什么区别呢?
【问题讨论】:
【参考方案1】:int Array[10]
是一个 c 风格的数组声明,它包含原始内存,如果您想对数组进行操作,则必须编写自己的函数。
array<int, 10> Array
是使用 std::array
类的 C++ 样式数组声明,该类是 STL container
。
后面提供了很多预定义的方法来对数组进行操作,例如找出数组中有多少元素,你只需要说Array.size()
。但是,对于前者,您可能必须编写自己的函数来遍历数组以找出大小。
【讨论】:
【参考方案2】:在 C++ 中,有多种方法可以创建数组。 int Array[10];
将创建一个类似于 C 数组的数组。这意味着它存在很多固有的内存问题。 array<int, 10> Array;
是前一个数组的 C++ 包装,消除了内存问题。此外,C++ 版本更擅长进行迭代、边界检查和其他一些次要功能。虽然他们最终都会做同样的事情,除非你正在做一些特别需要 C 数组的事情,否则我会选择 C++,这样可以省去很多麻烦。
【讨论】:
您可能想详细说明大量内存问题。以上是关于这两种说法有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章