[翻譯] C++ STL容器參考手冊 (總冊),stl參考手冊
1. 寫在最前面
這將是博主的第一篇技術博客,思考再三決定從翻譯開始。這將是一個系列的博客,由不同的章節組成,章節之間由超鏈接聯系,開發過程將使用增量式開發,每次完成一個章節。本篇是本系列的總冊,提供了所有子章節的超鏈接,另外所有的子章節也都將提供鏈接返回到本篇。
2. 本系列的目錄結構
總冊
第一章 <array>
第二章 <deque>
第三章 <forward_list>
第四章 <list>
第五章 <map>
第六章 <queue>
第七章 <set>
第八章 <stack>
第九章 <unordered_map>
第十章 <unordered_set>
第十一章 <vector>
3. 專有名詞的翻譯規范
專用名詞的翻譯在不同的資料中會有較大的差異,本文遵循如下的翻譯規范:
array 數組
deque 雙向隊列
forward list 單鏈表
list 鏈表
map 映射
queue 隊列
set 集合
stack 棧
unordered map 無序映射
unordered set 無序集合
vector 動態數組
priority queue 優先隊列
4. 本系列的原文
http://www.cplusplus.com/reference/stl/
5. 標准容器
容器,正如其字面意思,是存儲了一組對象的數據集合(這裡的每個對象都是這個容器的元素),當然了這裡的容器本身也是一個對象。所有的容器都被設計成為模板類,這樣一來容器可存儲的元素類型就具有非常大的靈活性。
容器負責管理自身用以存儲元素的物理空間,並且提供了成員函數來訪問這些元素 -- 有直接訪問的方式也有通過迭代器(具有類似指針的屬性)訪問的方式。
容器實現了程序設計中非常常見的結構:動態數組(vector),隊列(queue),棧(stack),堆(priority_queue),鏈表(list),樹(set),關聯數組(map)...
許多不同的容器具有相同的成員函數,並且共享一些功能。在決定使用哪一種具體的容器時,不僅僅需要考慮到容器提供的功能,同時也要考慮到訪問其成員的效率(復雜度)。尤其是對於序列容器,這些容器在插入/刪除元素與訪問元素的復雜度之間有著不同的權衡。
stack, queue以及priority_queue被實現為容器適配器。容器適配器並不是完整的容器,而是一個提供了某些特定接口的類,容器適配器將一個容器封裝起來,然後就可以通過容器適配器提供的這些接口來訪問這個容器的元素。
6. 容器模板類
序列容器
array (c++11 only)
數組類 (模板類)
vector
動態數組 (模板類)
deque
雙端隊列 (模板類)
forward_list
單鏈表 (模板類)
list (c++11 only)
鏈表 (模板類)
容器適配器
stack
先入後出棧 (模板類)
queue
先入先出隊列 (模板類)
priority_queue
優先隊列 (模板類)
關聯容器
set
集合 (模板類)
multiset
多重集合 (模板類)
map
映射 (模板類)
multimap
多重影射 (模板類)
無序關聯容器
unordered_set
無序集合 (模板類)
unordered_multiset
無序多重集合 (模板類)
unordered_map
無序映射 (模板類)
unordered_multimap
無序多重映射 (模板類)
7. 成員列表
序列容器
Headers
<array> | <vector> | <deque> | <forward_list> | <list> |
Members
array | vector | deque | forward_list | list |
constructor
implicit
vector
deque
forward_list
list
destructor
implicit
~vector
~deque
~forward_list
~list
operator=
implicit
operator=
operator=
operator=
operator=
iterators
begin
begin
begin
begin
begin
before_begin
begin
end
end
end
end
end
end
rbegin
rbegin
rbegin
rbegin
rbegin
rend
rend
rend
rend
rend
const iterators
begin
cbegin
cbegin
cbegin
cbegin
cbefore_begin
cbegin
cend
cend
cend
cend
cend
cend
crbegin
crbegin
crbegin
crbegin
crbegin
crend
crend
crend
crend
crend
capacity
size
size
size
size
size
max_size
max_size
max_size
max_size
max_size
max_size
empty
empty
empty
empty
empty
empty
resize
resize
resize
resize
resize
shrink_to_fit
shrink_to_fit
shrink_to_fit
capacity
capacity
reserve
reserve
element access
front
front
front
front
front
front
back
back
back
back
back
operator[]
operator[]
operator[]
operator[]
at
at
at
at
modifiers
assign
assign
assign
assign
assign
emplace
emplace
emplace
emplace_after
emplace
insert
insert
insert
insert_after
insert
erase
erase
erase
erase_after
erase
emplace_back
emplace_back
emplace_back
emplace_back
push_back
push_back
push_back
push_back
pop_back
pop_back
pop_back
pop_back
emplace_front
emplace_front
emplace_front
emplace_front
push_front
push_front
push_front
push_front
pop_front
pop_front
pop_front
pop_front
clear
clear
clear
clear
clear
swap
swap
swap
swap
swap
swap
list operations
splice
splice_after
splice
remove
remove
remove
remove_if
remove_if
remove_if
unique
unique
unique
merge
merge
merge
sort
sort
sort
reverse
reverse
reverse
observers
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
data
data
data
關聯容器
Headers
<set> | <map> | <unordered_set> | <unordered_map> |
Members
set | multiset | map | multimap | unordered_set | unordered_multiset | unordered_map | unordered_multimap |
constructor
set
multiset
map
multimap
unordered_set
unordered_multiset
unordered_map
unordered_multimap
destructor
~set
~multiset
~map
~multimap
~unordered_set
~unordered_multiset
~unordered_map
~unordered_multimap
assignment
operator=
operator=
operator=
operator=
operator=
operator=
operator=
operator=
iterators
begin
begin
begin
begin
begin
begin
begin
begin
begin
end
end
end
end
end
end
end
end
end
rbegin
rbegin
rbegin
rbegin
rbegin
rend
rend
rend
rend
rend
const iterators
cbegin
cbegin
cbegin
cbegin
cbegin
cbegin
cbegin
cbegin
cbegin
cend
cend
cend
cend
cend
cend
cend
cend
cend
crbegin
crbegin
crbegin
crbegin
crbegin
crend
crend
crend
crend
crend
capacity
size
size
size
size
size
size
size
size
size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
max_size
empty
empty
empty
empty
empty
empty
empty
empty
empty
reserve
reserve
reserve
reserve
reserve
element access
at
at
at
operator[]
operator[]
operator[]
modifiers
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
emplace_hint
insert
insert
insert
insert
insert
insert
insert
insert
insert
erase
erase
erase
erase
erase
erase
erase
erase
erase
clear
clear
clear
clear
clear
clear
clear
clear
clear
swap
swap
swap
swap
swap
swap
swap
swap
swap
operations
count
count
count
count
count
count
count
count
count
find
find
find
find
find
find
find
find
find
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
equal_range
lower_bound
lower_bound
lower_bound
lower_bound
lower_bound
upper_bound
upper_bound
upper_bound
upper_bound
upper_bound
observers
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
get_allocator
key_comp
key_comp
key_comp
key_comp
key_comp
value_comp
value_comp
value_comp
value_comp
value_comp
key_eq
key_eq
key_eq
key_eq
key_eq
hash_function
hash_function
hash_function
hash_function
hash_function
buckets
bucket
bucket
bucket
bucket
bucket
bucket_count
bucket_count
bucket_count
bucket_count
bucket_count
bucket_size
bucket_size
bucket_size
bucket_size
bucket_size
max_bucket_count
max_bucket_count
max_bucket_count
max_bucket_count
max_bucket_count
hash policy
rehash
rehash
rehash
rehash
rehash
load_factor
load_factor
load_factor
load_factor
load_factor
max_load_factor
max_load_factor
max_load_factor
max_load_factor
max_load_factor