9.3.2 訪問元素
順序容器提供了4種訪問元素的方式:c.front()、c.back()、c[n]、c.at(n)。對於儲存空間連續的容器(vector、string、deque和array)來說,這4中方式都可以用,可以通過front和back獲得首、尾元素,也可以通過下標運算子和at成員函式訪問任意位置的元素。而儲存空間不連續的list只能用begin和end成員函式獲得首、尾元素的引用,只能通過迭代器遞增遞減訪問中間的元素!forward_list更可憐,只能用begin獲得首元素,不能用end獲得尾元素,而且forward_list的迭代器不支援遞減運算,因此也不能通過尾後迭代器遞減來訪問尾元素。總之, forward_list是不支援除首元素外的元素的直接訪問的!
注意訪問成員函式返回的是引用,因此可以通過它們改變容器內元素的值!
順序容器的front和back成員函式是通過return *c.begin()和return *--c.end()實現的,因此對空容器使用front和back,會報錯「...iterator not dereferencable」!
對空容器使用front和back,以及下標運算子的下標越界,會產生未定義的行為。而使用at函式時下標越界,會丟擲out_of_range的異常。
發現乙個問題:就是容器的元素型別不能是const的,而容器本身可以定義成const的,就是說「vectorv」是非法的,而「const vector」是合法的!此時容器的大小和元素的值都不能改變。
9 3 順序容器操作
目錄9.3.2 訪問元素 9.3.3 刪除元素 9.3.4 特殊的forward list操作 略 9.3.5 改變容器的大小 9.3.6 容器操作可能使迭代器失效 s.push back a 等價於 s a listilist for int i 0 i 4 i ilist.push front ...
順序容器操作2
容器插入 list iterator iter slist.begin iter iter iter slist.insert iter,插入1 cout iter endl for list iterator i slist.begin i slist.end i cout i cout endl...
(52)順序容器操作
順序容器與關聯容器的不同之處在於兩者組織元素的方式。除了array之外,所有標準庫容器都提供了靈活的記憶體管理。在執行時可以動態新增或刪除元素來改變容器的大小。除array和forward list之外,每個順序容器 包括string型別 都支援push back。容器元素是拷貝 當我們用乙個物件來...