[英]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.