1. 原型
C11提供
template < class T, size_t N > class array;
T: 元素類型,以 array::value_type 作為別名使用;
N: array中元素大小;
- 固定size的序列容器;
- 初始化時, array對象不保存任何數據,除了編譯時期的行為對“元素”參數的編譯器初始化值
- 和普通的數組一樣,從[]訪問
- array僅僅為數組封裝了一層成員函數和全局函數,以作為標準容器使用
- array固定容器大小,不能擴展容量;
- 0大小的array是有效的,但是不能訪問數據。
- STL ?中的swap操作是非常低效率的操作;
- array容器能夠作為tuple對象(元組對象)使用。 頭文件<array>中重載了get函數來獲取array中的元素值。
使用頭文件:
#include <array>
?1.1 成員類型:
array中的成員類型作為一些參數、或者返回值類型的別名使用,下面的是別面以及定義:
- value_type:模板參數T
- reference: value_type&
- const_reference: const value_type&;
- pointer: value_type*
- const_pointer: const value_type*;
- iterator: 隨機指向value_type的迭代器
- const_iterator: 指向const value_type類型的迭代器
- reverse_iterator:?
- const_reverse_iterator:
- size_type: size_t(無符號整數 unsign int)
- difference_type: ptrdiff_t(符號整形 int)
1.2 成員函數
(1)Iterators
Array::begin:
Array::end:
Array::rbegin:
Array::rend;
Array::cbegin
Array::cend;
Array::crbegin
Array::crend;
?
(2)Capacity
Array::?size(): 元素數量
Array::max_size():最大容量
Array::expty(): 測試是否為空
?
(3)Element access
Array:: operator[]:
- 返回參數n位置的reference,注意,第一個元素位置為0;
- 與 成員函數at()具有相同的行為, 但是array::at()是會檢查參數n是否越界,以及如果越界則拋出異常信號
- 如果是const的array,則返回const_reference,否則返回reference
- 注意:refenerence的樣式是類型array內的別名定義。
?
?
reference at ( size_type n );
const_reference at ( size_type n ) const;
- 返回參數n位置的reference。自定檢測n是否位于有效的范圍內。并拋出out_of_rance 異常。如果n 大于size或者等于size
Array::front();
- 返回第一個元素的reference
- Calling this function on an empty container causes undefined behavior.
Array::back();
- 返回最后一個元素的reference, 不像array::end()返回的是iterator
- Calling this function on an empty container causes undefined behavior.
Array::data();
- 返回pointer類型指向第一個元素;
- 因為array類型是連續內存分配,因此可以對pointer進行任何偏置訪問相應位置數據;
(4)Modifiers
void Array::fill(const value_type& val):
- 對數組中的所有元素設置參數值
void Array::swap(array& x):
- 交換內容,兩個對象具有相同的size;
- 調用之后,兩個對象互相交換內容;
?
?
?1.3 非成員函數重載
get(array)
?返回array 中的第i個元素屬性引用。
?
relational operators(array)
?
?
?
?
1.4 非成員 類的聲明
(1)tuple_element<array>
(2)tuple_size<array>
?