(STL及演算法)7 順序容器的操作

2021-10-23 23:07:59 字數 4245 閱讀 9678

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 ...