1. vector
元素可重復(fù)的長(zhǎng)度可變的線性表,類(lèi)似 java 的 ArrayList
成員函數(shù) | ||
---|---|---|
operator[] |
reference operator[] (size_type n); const_reference operator[] (size_type n) const; 表明可以通過(guò)數(shù)組以角標(biāo)方式訪問(wèn)囚衔,即將其視作指針;若角標(biāo)越界甩苛,則行為未知 |
|
at() |
reference at (size_type n); const_reference at (size_type n) const; 獲取指定角標(biāo)的元素 会宪,如果不存在該角標(biāo),那么拋出越界異常 |
|
data() |
value_type* data() noexcept; const value_type* data() const noexcept; 獲取該vector實(shí)例的首地址元践,即指針 |
|
front() |
reference front(); const_reference front() const; 獲取該vector實(shí)例的首個(gè)元素 |
|
back() |
reference back(); const_reference back() const; 獲取該vector實(shí)例的末尾元素 |
|
empty() |
bool empty() const; 容器是否為空(沒(méi)有元素) |
|
size() |
size_type size() const; 容器內(nèi)元素的數(shù)量韭脊,非負(fù)數(shù) |
|
capacity() |
size_type capacity() const; 容器已分配內(nèi)存可存放元素的數(shù)量,一般略大于 size() |
|
max_size() |
size_type max_size() const; 最大的元素?cái)?shù)量单旁,像是固定值沪羔? 0x3FFFFFFF |
|
resize() |
void resize (size_type n, value_type val = value_type()); 容器的元素?cái)?shù)量置為 n; 若 n 小于原大小象浑,則從尾部開(kāi)始刪除蔫饰,剩余n個(gè)元素,capacity不會(huì)變化融柬; 若 n 大于原大小死嗦,則添加元素,若指定值粒氧,則新增元素都等于該值越除,若不指定則是0,capacity隨之變化。 |
|
reserve() |
void reserve (size_type n); 請(qǐng)求 vector 的容量(capacity)至少可以包含 n 個(gè)元素摘盆。 若 n 小于原capacity翼雀,則無(wú)變化;若 n 大于原capacity孩擂,則capacity=n狼渊。 |
|
shrink_to_fit() |
void shrink_to_fit(); 使得 capacity = size |
|
*iterator 即可取到迭代器對(duì)應(yīng)的元素 | ||
begin() |
iterator begin(); const_iterator begin() const;
|
|
end() |
iterator end(); const_iterator end() const;
|
|
cbegin() |
const_iterator cbegin() const noexcept; |
|
cend() |
const_iterator cend() const noexcept; |
|
rbegin() |
reverse_iterator rbegin(); const_reverse_iterator rbegin() const;
|
|
rend() |
reverse_iterator rend(); const_reverse_iterator rend() const;
|
|
crbegin() |
const_reverse_iterator crbegin() const noexcept; |
|
crend() |
const_reverse_iterator crend() const noexcept; |
|
clear() |
void clear(); 清空內(nèi)部元素,size變成0类垦,但capacity不變 |
|
push_back() |
void push_back (const value_type& val); 從尾部添加指定元素 |
|
pop_back() |
void pop_back(); 從尾部刪除一個(gè)元素 |
|
insert() |
iterator insert (iterator position, const value_type& val); 向指定位置的前面狈邑,插入元素,返回的迭代器指向剛剛插入的元素 void insert (iterator position, size_type n, const value_type& val); 向指定位置的前面蚤认,插入 n 個(gè)指定值的元素 template <class InputIterator> void insert (iterator position, InputIterator first, InputIterator last); 向指定位置的前面米苹,插入迭代器的 [first, last) 之間的元素 |
|
erase() |
iterator erase (iterator position); 刪除指定迭代器的元素 iterator erase (iterator first, iterator last); 刪除迭代器 [first, last) 之間的元素 |
|
swap() |
void swap (vector& x); 交換兩個(gè)vector的所有元素 |
|
assign() |
void assign (size_type n, const value_type& val); 清空容器,指定容器的大小砰琢,并全部賦予初值 template <class InputIterator> void assign (InputIterator first, InputIterator last); 清空容器蘸嘶,將迭代器 [first, last) 之間的元素放入容器中 |
|
emplace() |
template <class... Args>iterator emplace (const_iterator position, Args&&... args); 在指定的位置(iterator)的前面,插入一個(gè)新元素陪汽,該新元素以第二個(gè)及后續(xù)參數(shù)作為構(gòu)其造函數(shù)的參數(shù) |
|
emplace_back() |
template <class... Args> void emplace_back (Args&&... args); 在vector尾部插入一個(gè)新元素训唱,該新元素以第二個(gè)及后續(xù)參數(shù)作為其構(gòu)造函數(shù)的參數(shù) |
2. set
元素 可重復(fù)的長(zhǎng)度可變的線性表
與 map 對(duì)外提供了相同的方法(方法名相同),僅參數(shù)或元素類(lèi)型等不同挚冤。
可能與 java 類(lèi)似况增,也是由 map 實(shí)現(xiàn)的。
3.array
元素可重復(fù)的長(zhǎng)度 可變的線性表
std::array<type, fixed-length> arr;
成員函數(shù) | |
---|---|
同 vector | |
同 map | |
同 vector | |
fill() |
void fill (const value_type& val); 用指定的值训挡,填充數(shù)組 |
swap() | 交換兩個(gè)容器的內(nèi)容 |
5. other linear tables(list, stack, queue, deque)
list:序列容器巡通,允許常量時(shí)間內(nèi)的操作和移除操作,可雙向操作舍哄。
stack: FIFO 棧,只能操作線性表的一端誊锭;
queue:FIFO 隊(duì)列表悬,線性表一端新增,另一端刪除丧靡;
deque:隊(duì)列蟆沫,線性表的兩端均可操作;
6. map
鍵值對(duì)温治,同一個(gè) map 內(nèi) key 唯一饭庞。
成員函數(shù) | ||
---|---|---|
operator[] |
reference operator[] (size_type n); const_reference operator[] (size_type n) const; 表明可以通過(guò)數(shù)組以角標(biāo)方式訪問(wèn),即將其視作指針熬荆;如果指定的位置不存在舟山,那么該操作符會(huì)創(chuàng)建該key并返回默認(rèn)元素。 |
|
at() |
reference at (size_type n); const_reference at (size_type n) const; 獲取指定角標(biāo)的元素;如果找不到該key 會(huì)拋出異常累盗。 |
|
empty() |
bool empty() const; 容器是否為空(沒(méi)有元素) |
|
size() |
size_type size() const; 容器內(nèi)元素的數(shù)量寒矿,非負(fù)數(shù) |
|
max_size() |
size_type max_size() const; 最大的元素?cái)?shù)量,固定值若债?符相? |
|
迭代器的函數(shù)與 vector 相同 *iterator 即可取到迭代器對(duì)應(yīng)的map的元素,其元素類(lèi)型是 std::pair<const key_type, mapped_type>蠢琳; iterator->first 取 map 某元素的 key; iterator->second 取 map 某元素的 value |
||
swap() |
void swap (map& x); 交換本容器與參數(shù)容器的內(nèi)部元素 |
|
clear() | 清空 | |
erase() |
iterator erase (const_iterator position); 刪除指定位置 size_type erase (const key_type& k); 直接刪除 key iterator erase (const_iterator first, const_iterator last); 刪除指定的key范圍的鍵值對(duì) |
|
insert() |
pair<iterator,bool> insert (const value_type& val); template <class P> pair<iterator,bool> insert (P&& val); iterator insert (const_iterator position, const value_type& val); template <class P> iterator insert (const_iterator position, P&& val); template <class InputIterator> void insert (InputIterator first, InputIterator last); void insert (initializer_list<value_type> il); insert(std::map<type1, type2>(value1, value2)) insert(std::pair<type1, type2>(value1, value2)) insert(std::make_pair(value1, value2)) |
|
emplace() |
template <class... Args> pair<iterator,bool> emplace (Args&&... args);
|
|
emplace_hint() |
template <class... Args> iterator emplace_hint (const_iterator position, Args&&... args);
|
|
key_comp() |
key_compare key_comp() const; 返回用于比較容器內(nèi) key 的比較器對(duì)象啊终; 該對(duì)象決定元素在容器內(nèi)的排序; 該比較器是一個(gè)函數(shù)指針或函數(shù)對(duì)象傲须,它有兩個(gè)參數(shù)(key 類(lèi)型)蓝牲,若前者小于后者則返回true,否則返回false |
|
value_comp() |
value_compare value_comp() const; 返回用于比較兩個(gè)元素(元素類(lèi)型)的比較器對(duì)象躏碳,該比較器函數(shù)的作用是決定哪個(gè)元素的 key 應(yīng)該在前面 |
|
find() |
iterator find (const key_type& k); const_iterator find (const key_type& k) const; 在 map 中尋找指定的key搞旭,若找到返回迭代器;若找不到返回 map.end() |
|
count() |
size_type count (const key_type& k) const; 在map中尋找指定的key的數(shù)量菇绵,由于map的key唯一肄渗,因此若存在則是1;否則返回0 |
|
lower_bound() |
iterator lower_bound (const key_type& k); const_iterator lower_bound (const key_type& k) const; 如果存在該指定的key咬最,則返回該指定key的迭代器翎嫡;若不存在呢? |
|
upper_bound() |
iterator upper_bound (const key_type& k); const_iterator upper_bound (const key_type& k) const; 若存在該指定的key永乌,則返回該指定key的后一個(gè)元素的迭代器惑申;若不存在呢? |
|
equal_range() |
pair<const_iterator,const_iterator> equal_range (const key_type& k) const; pair<iterator,iterator> equal_range (const key_type& k); 返回包含指定key的邊界范圍翅雏,空間包含的形態(tài)是 [ , )圈驼。 若指定key不存在,則邊界范圍是 [當(dāng)前元素迭代器望几,下一個(gè)元素迭代器)绩脆; 若指定key不存在,則邊界范圍是 相同元素的迭代器 |