c 筆記 關於標準庫中容器內的元素

2021-06-05 21:56:52 字數 689 閱讀 2587

1.容器元素的條件

stl容器元素必須滿足以下三個基本要求:

1)必須可透過copy建構函式進行複製。

副本與原本必須相等,亦即所有相等測試的結果,原本與副本行為一致。所有容器都會在內部生成乙個元素副本,並返回該暫時性副本,因此copy建構函式會被頻繁地呼叫。所以copy建構函式應該盡可能的優化。

2)必須可以透過assignment操作符完成賦值動作。

容器與演算法都使用assignment操作符,才能以新元素改寫舊元素。

3)必須可以透過析構函式完成銷毀動作。

這三個條件對任何class都是隱式成立的。下面幾個條件,也應當獲得滿足:

4)對序列式容器而言,元素的default建構函式必須可用。

我們可以在沒有給予任何初值的情況下,建立乙個非空容器,或增加視窗的元素個數。這些元素都將以default建構函式完成。

6)在關聯式容器中,元素必須定義出排序準則。預設情況下是operator<,透過仿函式less<>被呼叫。

2.value語意與reference語意

stl只支援value語意,不支援reference語意。乙個顯而易見的方法是以指標實現reference語意,但直接使用指標是不夠安全的。好一點的辦法是使用智慧型指標,但請注意std::auto_prt是絕對不能用的,應該使用引用計數型的指標,如boost::shared_ptr。

摘自c++標準程式庫

C 標準庫中vector容器的使用

標準stl序列容器 vector string deque和list。標準stl關聯容器 set multiset map和multimap。非標準序列容器slist和rope。slist是乙個單向鍊錶,rope本質上是一 重型 string。非標準的關聯容器hash set hase multis...

C 容器介面卡標準庫筆記

函式 功能stack 資料型別,容器型別 識別符號 後者為底層實現的容器型別,預設為deque e.g stack s 構造乙個存放int型別的空棧函式 功能s.push a 將元素a加入棧區,沒有返回值 s.emplace a 將元素a加入棧區,a可以為類型別,傳入建構函式的引數,將物件加入棧區 ...

C 新手關於標準庫學習筆記

c 中定義了乙個內容豐富的抽象資料型別標準庫,其中最重要的是string和vector,他們分別定義了大小可變的字串和集合。下面分別詳細講解兩者還有bitset的一些基本用法。新手記錄的東西都很瑣碎,沒辦法 標準庫string型別 讀寫 標準輸入讀取string型別 cin s 忽略開頭所有空白字元...