簡體   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