繁体   English   中英

两个数组声明之间的C ++区别

[英]C++ difference between two array declarations

我意识到这是非常基本的,但是有人会介意解释这两个数组声明之间的区别:

#include <array>
array<int, 5> myints;

...和:

int myints[5];

...以及myints.size()为什么使用第一个声明而不使用第二个声明。

int myints[5];

这是五个整数的数组。
它是C和C ++的基本语言结构。
内置类型上没有成员函数。

std::array<int, 5> myints;

这是标准库 std::array<int, 5>的实例
(它本身是标准库类模板 std::array<T, N>的实例)。
它是基本数组的包装,为方便起见提供实用程序成员函数(例如size() )。

array是一个类(标准stl容器),该类具有方法并包装了许多要应用于更多标准静态数组的函数。

看看std::vector也。 另请参阅http://www.cplusplus.com/reference/vector/vector/了解有关如何使用数组和向量的信息。

特别是,向量更适合于动态内存分配,而您的int myints[5]声明称为静态分配,在可分配的内存方面有一些很大的限制。

int myints[5]; 给你一个“ 5 int s的数组”。 此“数组”类型是一种语言功能。 它给您的对象在内存中基本上彼此相邻5个int 此数组类型不是类类型,因此它没有成员函数。

std::array<int, N> myints; 给你一个std::array对象。 std::array是标准库中的类类型,因此可能具有成员函数,例如成员函数size 该类封装了固定大小的数组,并提供了一个不错的接口。

在第一个声明array myints ; 这里的myins是数组类的对象,它是c数组的一个薄包装。 并且此类具有size()函数,该函数将返回size。 第二个声明是c样式数组。 这不是一个类或结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM