1.容器的定義和型別別名
2.begin和end成員(這兩個成員返回的都是迭代器型別)
順序容器三種:
vector
list
deque
這三種順序容器的操作方式是一致的。
#include
#include
#include
#include
using
namespace std;
intmain()
//list和deque也是一樣的
vector<
int>
::reverse_iterator rfirsta = a.
rbegin()
;//rbegin返回乙個逆序迭代器(從最後乙個向前進行迭代)
vector<
int>
::reverse_iterator rlasta = a.
rend()
;//常迭代器
vector<
int>
::const_iterator cfirsta = ca.
begin()
; vector<
int>
::const_iterator clasta = ca.
end();
vector<
int>
::size_type a1;
vector<
int>
::iterator a2;
vector<
int>
::const_iterator a3;
//常迭代器,不可以改變
vector<
int>
::reverse_iterator a4;
vector<
int>
::const_reverse_iterator a5;
vector<
int>
::difference_type a6;
list<
int>
::size_type b1;
list<
int>
::iterator b2;
list<
int>
::const_iterator b3;
list<
int>
::reverse_iterator b4;
list<
int>
::const_reverse_iterator b5;
list<
int>
::difference_type b6;
deque<
int>
::size_type c1;
deque<
int>
::iterator c2;
deque<
int>
::const_iterator c3;
deque<
int>
::reverse_iterator c4;
deque<
int>
::const_reverse_iterator c5;
deque<
int>
::difference_type c6;
return0;
}
1.在順序容器中新增元素
c.push_back(t)
c.push_front(t)
c.insert(p,t) 插入在迭代器的前面
c.insert(p,n,t) 插入在迭代器的前面n個t
c.insert(p,b,e) 把b和e兩個迭代器之間的元素插入到,p迭代器的前面
2.容器新增的元素都是副本
3.新增元素可能會使迭代器失效
4.避免儲存end操作返回的迭代器
#include
#include
#include
#include
#include
using
namespace std;
intmain()
; slist.
insert
(it, arr +
1, arr +2)
;for
(list
::iterator iter = slist.
begin()
; iter != slist.
end();
++iter)
cout <<
*iter <<
" ";
cout << endl;
return0;
}
1.關係運算子
2.所有的容器型別都可以使用
3.比較的容器必須具有相同的型別
4.容器的比較是基於容器內元素的比較
5.容器內元素必須有相應的關係運算子
#include
#include
#include
#include
using
namespace std;
intmain()
1.容器的大小操作
c.
size()
c.max_size()
c.empty()
c.resize
(n)c.
resize
(n,t)
注意:resize操作可能會使迭代器失效
#include
#include
#include
#include
using
namespace std;
intmain()
1.訪問元素
c.back()
c.front()
c[n]
c.at(n)
注意:c[n]和c.at[n]只適合vector和deque容器,list是鍊錶沒有下標,所以list不能使用。
#include
#include
#include
#include
using
namespace std;
intmain()
1.刪除元素
c.erase(p) //利用迭代器,刪除迭代器所指向的元素
c.erase
(b,e)
//兩個迭代器的之間的元素,但是包括前方的不包括後方的
c.clear()
//全部刪除
c.pop_back()
//最後乙個刪除
c.pop_front()
//前面第乙個刪除
注意:c.pop_front()只適用於list和deque容器
#include
#include
#include
#include
#include
#include
using
namespace std;
intmain()
1.賦值與交換(swap)
c1=c2
c1.swap
(c2)
c.assign
(b,e)
c.assign
(n,t)
2.使用assign:型別相容即可
3.使用swap:型別必須相同
#include
#include
#include
#include
using
namespace std;
intmain()
STL容器底層原理及容器操作總結
最近在總結c 的一些知識,所有內容都來自 vector vector的資料結構 單向開口線性連續空間。迭代器就是乙個普通指標,random access iterator 注意 對vector的任何操作,一旦引起空間重新配置,指向原vector的所有迭代器就都失效了。list list的資料結構 l...
順序容器的介紹及常用操作
乙個容器就是一些特定型別物件的集合。順序容器為程式設計師提供控制元素儲存和訪問順序的嫩裡。這種順序不依賴於元素的值,而是元素加入容器時的位置相對應。vector 可變大小陣列。支援快速的隨機訪問,在尾部之外的位置插入或者刪除元素會很慢 deque 雙端佇列,支援,快速隨機訪問,在尾部之外的位置插入或...
STL 容器的常用操作
基礎資料結構 deque 佇列 雙向表 list 雙向鍊錶 vector 單向鍊錶 include include include include include include include include includeusing namespace std int main01 a.pop ...