C++進階STL-STL共性、使用時機
阿新 • • 發佈:2018-12-13
共性
- 我們給STL容器中插入資料的時候,容器內部做了拷貝動作,而不是將原始資料放到容器中,所以我們提供的元素必須能夠被拷貝,物件成員如果有指標的話,考慮淺拷貝、深拷貝的情況(有自定義拷貝構造,過載=操作符)
- 除了queue和stack之外,每個容器搜可以返回迭代器,通過迭代器訪問元素
- 都有size()、empty(),返回容器中元素個數,判斷容器是否為空
- 每個容器都有預設建構函式和預設拷貝建構函式
使用時機
vector和deque容器之間的比較: (1):vector. at () 比deque. at() 的效率高 (2):如果有大量釋放的話,vector花的時間更少 (3):deque 支援頭尾部的快速插入和刪除
- vector:比如軟體操作的歷史記錄的儲存,它需要按照時間有順序的排列,我們通常不會刪除以前的資料,只做檢視使用
- deque:比如排隊購票,尾端插入,頭端移除,如果採用vector容器,頭端移除效率很低,需要移動大量資料
- list:資料頻繁插入、刪除,插入位置不固定,如:公交車乘客,隨時上下車,位置不定
- set:自動排序需求,比如打遊戲得分,分數扔到set容器中,自動按規則排好
- map:具有快速查詢的能力,比如存放的是全國人民的ID