C/C++函数学习(6)容器分类
生活随笔
收集整理的這篇文章主要介紹了
C/C++函数学习(6)容器分类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://net.pku.edu.cn/~yhf/UsingSTL.htm? 三十分鐘掌握STL
STL容器分三大類:順序容器(sequence container)、關聯容器(associative container)和容器適配器(container adapter)。另外我們熟悉的C語言式數組合string,它們也是一種容器,稱為近容器(near container)。
(1)順序容器--提供順序表的表示和操作vector(向量) ?可以隨機訪問序列中的單個元素,在序列尾部快速插入和刪除元素。如果在序列中插入和刪除元素,時間與序列長度成正比。
deque(雙向對列) ?可以隨機訪問序列中的單個元素,在序列頭或尾部快速插入和刪除元素。如果在序列中插入和刪除元素,時間與序列長度成正比。
list(雙向鏈表) ?動態鏈式存儲數據,可以從任意位置快速插入和刪除元素。
(2)關聯容器--提供集合和映像的表示和操作
set(集合) ?不允許重復值,可以快速查
multiset(集合) ?允許重復值,可以快速查找
map(映像) ?一對一的映像,不允許重復值,可以實現基于關鍵字的快速查找
multimap(映像) ?一對多的映像,允許重復值,可以實現基于關鍵字的快速查找
(3)容器適配器--特殊順序表
stack(堆棧) ?后進先出(LIFO,last-in first-out)表,只能在表頭插入和刪除元素
queue(隊列) ?先進先出(FIFO,first-in first-out)表,只能在表頭刪除元素,在表尾插入元素
priority_queue(優先隊列) ?優先級最高的元素總是第一出列
這些表頭文件都在namespace std中
-----------------------------------------------------------------------------------------
? 頭文件 ? ? ? ? ? ? ? ?| ? ? ? ? ? ?包含容器
-----------------------------------------------------------------------------------------
<vector> ? ? ? ? ? ? ?| ? ? ? ? ? ?vector
-----------------------------------------------------------------------------------------
<list> ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ?list
-----------------------------------------------------------------------------------------
<deque> ? ? ? ? ? ? | ? ? ? ? ? ? deque
-----------------------------------------------------------------------------------------
<queue> ? ? ? ? ? ? | ? ? ? ? ? ?queue和priority_queue
-----------------------------------------------------------------------------------------
<stack> ? ? ? ? ? ? ? | ? ? ? ? ? ?stack
-----------------------------------------------------------------------------------------
<map> ? ? ? ? ? ? ? ?| ? ? ? ? ? ?map ?multimap
-----------------------------------------------------------------------------------------
<set> ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ?set ?multiset
-----------------------------------------------------------------------------------------
<bitset> ? ? ? ? ? ? | ? ? ? ? ? ?bitset?
-----------------------------------------------------------------------------------------
=========================================================================================
vector成員函數說明
size_type 無符號整數
iterator 隨機訪問的迭代,迭代是對象版本的指針
reference 可以轉換為T&的類型
const_reference 可以轉換為T&常量的類型
=========================================================================================
主要成員函數及其功能:
vector::vector()
vector::vector( const T &V)
vector::vector( size_type n,const T &val=T() )
vector::~vector()
reference vector::at( int i )
const_reference vector::at( int i )
reference vector::back()
reference vector::back()const
iterator vector::begin()
const_iterator vector::begin()
void vector::clear()
bool vector::empty()const ?如果為容器為空,返回true;否則返回false
iterator vector::end()
const_iterator vector::end()
iterator vector::erase( iterator pos )
reference vector::front()
reference vector::front()const
size_type max_size() const; ? ? ? ? ? ?// 返回容器能容納的最大元素個數
size_type size() const; ? ? ? ? ? ? ? ?// 返回容器中元素個數 ?
size_type capacity() const; ? ? ? ? ? ?// 容器能夠存儲的元素個數,有:capacity() >= size() ?
void reserve(size_type n); ? ? ? ? ? ? // 確保capacity() >= n
void resize(size_type n, T x = T()); ? // 確保返回后,有:size() == n;如果之前size()<n,那么用元素x的值補全。
?
reference front(); ? ? ? ? ? ? ? ? ? ? // 返回容器中第一個元素的引用(容器必須非空)
const_reference front() const; ? ? ? ? ? ? ? ? ??
reference back(); ? ? ? ? ? ? ? ? ? ? ?// 返回容器中最后一個元素的引用(容器必須非空)
const_reference back() const;
?
reference operator[](size_type pos); ? // 返回下標為pos的元素的引用(下標從0開始;如果下標不正確,則屬于未定義行為。
const_reference operator[](size_type pos) const;?
void push_back(const T& x); ? ? ? ? ? ?// 向容器末尾添加一個元素 ? ? ? ? ?
void pop_back(); ? ? ? ? ? ? ? ? ? ? ? // 彈出容器中最后一個元素(容器必須非空)
?
// 注:下面的插入和刪除操作將發生元素的移動(為了保持連續存儲的性質),所以之前的迭代器可能失效
iterator insert(iterator it, const T& x = T()); ? ? ? ?// 在插入點元素之前插入元素(或者說在插入點插入元素)
void insert(iterator it, size_type n, const T& x); ? ? // 注意迭代器可能不再有效(可能重新分配空間)
void insert(iterator it, const_iterator first, const_iterator last);
?
iterator erase(iterator it); ? ? ? ? ? // 刪除指定元素,并返回刪除元素后一個元素的位置(如果無元素,返回end())
iterator erase(iterator first, iterator last); // 注意:刪除元素后,刪除點之后的元素對應的迭代器不再有效。
?
void clear() const; ? ? ? ? ? ? ? ? ? ?// 清空容器,相當于調用erase( begin(), end())
?
void assign(size_type n, const T& x = T()); ? // 賦值,用指定元素序列替換容器內所有元素
void assign(const_iterator first, const_iterator last);
?
const_iterator begin() const; ? ? ? ? ?// 迭代序列
iterator begin();
const_iterator end() const;
iterator end();
?
const_reverse_iterator rbegin() const;
reverse_iterator rbegin();
const_reverse_iterator rend() const;?
reverse_iterator rend();
總結
以上是生活随笔為你收集整理的C/C++函数学习(6)容器分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Appium安装使用总结
- 下一篇: unixODBC的使用