STL容器的介面

2021-09-13 14:57:52 字數 2292 閱讀 9448

bool empty() const;

size_type size() const;

reference top(); //reference為引用

const_reference top() const;

void push(const value_type& x);

void pop();

stack預設使用deque來實現。通過stack>,可以使用標準庫的list來實現。

bool empty() const;

size_type size() const;

reference front(); //reference為引用

const_reference front() const;

reference back();

const_reference back() const;

void push(const value_type& x);

void pop();

queue預設使用deque來實現。通過queue>,可以使用標準庫的list來實現。

iterator begin();

iterator end();

reference operator(size_type n);

reference front();

reference back();

size_type size() const;

bool empty() const;

void push_back(const value_type& t);

void push_front(const value_type& t);

void pop_back();

void pop_front();

void clear();

iterator erase(iterator pos); //返回指向刪除位置的迭代器,這個位置現在有元素填充

iterator erase(iterator first, iterator last); // 返回指向第乙個刪除位置的迭代器

iterator insert(iterator position, const value_type& x);//返回指向新加入元素的迭代器

deque的迭代器設計很複雜。deque是分段連續的,其迭代器是指向每個分段的。然而,每個分段都有三個指標,分別是first\last\cur,指向分段第乙個、最後乙個和當前的元素。當對迭代器進行操作時,內部實現為對cur的操作,也就實現了對元素而不是分段的操作。可以用find函式來通過迭代器進行查詢。

iterator begin();

iterator end();

//reference operator(size_type n); list沒有過載運算子

reference front();

reference back();

size_type size() const;

bool empty() const;

void push_back(const t& t);

void push_front(const t& t);

void pop_back();

void pop_front();

void clear();

void remove(const t& value); //將數值為value之前的所有元素移除

void unique(); //移除數值相同的連續元素,使其只剩乙個。重點:數值相同且連續。

iterator erase(iterator pos); //返回指向刪除位置的迭代器,這個位置現在有元素填充

void splice(iterator pos, list&x); //將x接合於pos所指的位置之前,x必須不同於*this

void splice(iterator pos, list&, iterator i); //將i所指向的元素接合於position所指位置之前,pos

//和x可以指向同乙個list

void merge(list&x); //將x合併到*this身上,兩個list的內容都必須經過遞增排序

void reverse(); //將*this的內容逆向重置

void sort(); //list不能使用stl的sort演算法。本函式使用快排實現。

iterator insert(iterator position, const value_type& x);//返回指向新加入元素的迭代器

C 容器(STL容器)

容器 container 用於存放資料的類模板。可變長陣列 鍊錶 平衡二叉樹等資料結構在stl中都被實現為容器。在使用容器時,即將容器類模型例項化為容器類,會指明容器中存放的元素是什麼型別。容器可以分為兩大類 順序容器和關聯容器 順序容器有可變長動態陣列vector 雙端佇列deque 雙向鍊錶li...

不要在公共介面中傳遞STL容器

最近的乙個專案,是開發乙個framework,提供給公司內部不同的產品線使用。之間遇到的乙個問題,就是stl容器的使用,而結論是不要在公共介面中傳遞stl容器 也可以說,不要在暴露給客戶的標頭檔案中包含stl的標頭檔案。為什麼有這個結論,我們可以從幾個方面來論述 雖然,微軟這篇文章提到匯出vecto...

STL容器的選擇

標準stl序列容器 vector string deque和list。標準stl關聯容器 set multiset map和multimap。非標準序列容器slist和rope。slist是乙個單向鍊錶,rope本質上是乙個重型字串。繩子 rope 是重型的 線 string 明白了嗎?你可以找到乙...