第9章 順序容器 3

2021-06-02 05:12:56 字數 920 閱讀 6354

9.2 迭代器和迭代器範圍

與容器型別一樣,所有迭代器具有相同的介面:如果某種迭代器支援某種操作,那麼支援這種操作的其他迭代器也會以相同的方式支援這種操作。

*iter

iter -> mem

vector和deque容器的迭代器提供額外的運算

只有vector和deque容器提供下面幾種重要的運算集合:迭代器算術運算,以及使用除了==和!=之外的關係操作符來比較兩個迭代器(==和!=這兩種關係運算適用於所有容器)。

關係操作符只適用於vector和deque容器,這是因為只有這兩種容器為其元素提供快速、隨機的訪問。它們確保可根據元素位置直接有效地訪問指定的容器關係。這兩種容器都支援通過元素位置實現的隨機訪問,因此它們的迭代器都可以有效地實現算術和關係運算。

list容器既不支援算術運算,也不支援關係運算,它只提供前置和後置的自增、自減運算以及相等(不等)運算。

9.2.1 迭代器範圍

c++語言使用一對迭代器標記迭代器範圍(iterator range),這兩個迭代器分別指向同乙個容器中的兩個元素或超出末端的下一位置,通常我們將它們命名為first和last,或beg和end,用於標記容器中的一段元素範圍。

儘管last和end這兩個名字很常見,但是它們卻容易引起誤解。其實第二個迭代器從來都不是指向元素範圍的最後乙個元素,而是指向最後乙個元素的下乙個位置。該範圍內的元素包括迭代器first指向的元素,以及從first開始一直到迭代器last指向的位置之前的所有元素。如果兩個迭代器相等,則迭代器範圍為空。

迭代器first和last如果滿足以下條件,則可形成乙個迭代器範圍:

假設first和last標記了乙個有效的迭代器範圍,於是:

9.2.2 使迭代器失效的容器操作

使用迭代器編寫程式時,必須留意哪些操作會使迭代器失效。使用那個無效迭代器將會導致嚴重的執行時錯誤。

第9章 順序容器 5

9.3.4 關係操作符 所有容器型別都支援關係操作符來實現兩個容器的比較。比較的容器必須具有相同的容器型別,而且其元素型別也必須相同。c 語言只允許兩個容器做其元素型別定義的關係運算。9.3.5 容器大小的操作 size操作返回容器內元素的個數 empty操作則返回乙個布林值,當容器大小為0時,返回...

第9章順序容器 vector string練習題

include includeusing namespace std vector iterator findint vector iterator beg,vector iterator end,int ival int tmain int argc,tchar argv vectorivec i...

《C Primer》讀書筆記 第9章 順序容器

順序容器型別 vector 可變大小陣列 deque 雙端佇列 list 雙向列表 forward list 單向列表 c 11新增 array 固定大小陣列 c 11新增 string 與vector相似的容器,但專門用於儲存字元 順序容器選取原則 通常選用vector是最好的選擇,除非你有很好的...