一:容器的共通能力:
所有stl容器都必須滿足三個最核心能力:
1: 所有stl容器提供的都是value語義而非reference語義;即容器進行元素的安插操作是,內部實施的是拷貝操作,置於容器中,因此要求容器的每乙個元素都能夠被拷貝;如果打算存放的物件不具有public copy建構函式,或者想要的不是複製出來的副本,那麼容器元素型別就只能是(指向物件)指標型別;
2:總體而言,所有元素形成乙個次序(order),也就是說,我們可以依相同次序一次貨多次遍歷每個元素。每個容器都提供了可返回迭代器的函式,運用這些迭代器就可以遍歷元素,這是stl演算法賴以生存的關鍵介面;
3:一般而言,各項操作並非絕對安全,呼叫者必須確保傳給操作函式的引數符合需求,違反這些需求(比如使用非法索引)會導致未定義行為,通常stl不會自己丟擲異常,對於異常的檢查與處理得小心注意;
二:容器的共通操作
conttype c; // 產生乙個空容器
conttype c1(c2); // 長生乙個同型容器
conttype c(beg, end); // 賦值[beg,end)區間內的元素,作為容器初值
c.~conttype(); // 刪除所有元素,釋放記憶體
c.size(); // 返回容器中的元素數量
c.empty(); // 判斷容器是否為空,相當於size()==0
c.max_size(); // 返回元素的最大可能數量
// 對於比較運算子定義的三條規則:
// 1:比較操作的兩端(兩個容器)必須屬於同一型別
// 2:如果兩個容器依序相等,則兩個容器相等
// 3:採用字典式順序比較原則來判斷某個容器是否小於另乙個容器:
// 3.1:兩個序列中的元素一一比較,如果兩元素不相等,則這兩個元素的比較結果就是這兩個序列的比較結果;
// 3.2:古國兩元素中國的元素數量不同,則元素較少的那個序列小於另一串行;
c1 == c2; // 判斷是否c1等於c2
c1 != c2; // 判斷是否c1不等於c2
c1 < c2;
c1 > c2;
c1 <= c2;
c2 >= c2;
// 4:賦值與交換
c1 = c2; // 將c2的所有元素賦值給c1
c1.swap(c2); // 交換c1和c2的資料
swap(c1, c2); // 同上,是個全域性函式
// 5:迭代器相關
c.begin(); // 返回乙個迭代器,指向第乙個元素
c.end(); // 返回乙個迭代器,***指向最後元素的下一位置***
c.rbegin(); // 返向乙個逆向迭代器,指向逆向遍歷時的第乙個元素
c.rend(); // 返回乙個逆向迭代器,***指向逆向遍歷時的最後元素的下一位置***
// 注,任意時候對於*end(),以及*rend()都是屬於未定義行為,因此對於end()以及rend()返回的迭代器都不應該對她呼叫operator*或operator->
// 6:訪問相關
c.insert(posbyiterator, elem); // 將elem的乙份副本安插於posbyiterator處,返回值和posbyiterator的意義並不相同
c.erase(beg, end); // 移除[beg, end)區間內的所有元素,某些容器會返回未被移除的第乙個接續元素,***注意迭代器指示的位置跟著變***
c.clear(); // 移除所有元素,令容器為空
c.get_allocator(); // 返回容器的記憶體模型
簡單測試**:
#include
#include
using
namespace
std;
void test()
int main()
STL 容器共通能力
1 來自教程 所有容器提供的都是值 value 語意,而非引用 reference 語意。容器執行插入元素的操作時,內部實施拷貝動作。所以stl容器內儲存的元素必須能夠被拷貝 必須提供拷貝建構函式 除了queue與stack外,每個容器都提供可返回迭代器的函式,運用返回的迭代器就可以訪問元素。通常s...
STL學習筆記 2 容器的共通操作
每個容器都有很多操作,以下操作為所有容器共有的 一 構造,拷貝和析構 conttype c 建立乙個空容器,其中沒有任何元素 conttype c1 c2 建立乙個同種類形容器的乙個copy conttype c beg,end 建立乙個容器,以區間 beg,end 做為元素初值 c.conttyp...
IE和火狐下獲取單元格內容的共通方法
ie和火狐下獲取單元格內容所使用的方法是不一樣的,ie用的innertext,而火狐是用contenttext,可以通過下面所列的方法實現兩個瀏覽器的通用.在使用時只需要把這兩個函式放到js檔案的開始位置或其他js方法之前就行。方法如下 function isie if isie return an...