C++ STL 順序容器訪問最後一個元素的方法
遇到個需求,需要實現訪問list的最後一個元素,不想通過遍歷獲取(因為list可能很長)。於是尋找如何方便的訪問list的最後一個元素。C++ Primer上面沒有很明確的說明,只是說了迭代器 iterator的操作方法和範圍。範圍是[begin,end),操作有++,--。
於是大膽嘗試iterator it = list.end();it--;竟然神奇的獲得了想要的結果。後來轉念一想,如果迭代器指向end,然後迭代器再++會怎麼樣?或者迭代器指向begin然後--會怎麼樣?測試了下,直接丟擲超出範圍異常。看來STL做的還挺嚴謹的。
STL最好對這種用法作出說明,雖然很細節,但是很有用。
最後簡單說下為什麼會有這個需求。需要用STL list實現環形連結串列,當連結串列中的第1個元素需要找其前任的時候。會發現找到是連結串列中的最後一個元素。
這個故事告訴我們,實踐很重要,文件有時候不能概括全部細節。
相關推薦
C++ STL 順序容器訪問最後一個元素的方法
遇到個需求,需要實現訪問list的最後一個元素,不想通過遍歷獲取(因為list可能很長)。於是尋找如何方便的訪問list的最後一個元素。C++ Primer上面沒有很明確的說明,只是說了迭代器 iterator的操作方法和範圍。範圍是[begin,end),操作有
C++ STL 順序容器--list + 關聯容器
list 雙向環裝連結串列,可以雙向遍歷,但不能隨機訪問任意元素,可動態增加或者減少元素,記憶體管理自動完成,增加任何元素都不會使迭代器失效, 刪除元素時,除了指向當前被刪元素的迭代器外,其他迭代器都不會失效 iterator指向當前被刪除元素的下一個。 deque ve
容器的最後一個元素是否大於第一個元素
#include<iostream> #include<vector> using namespace std; template<typename C> bool lastGreaterThanFirst(const C& container)
c/c++ 標準順序容器 容器的訪問,刪除 操作
end 操作 last class 是否 name 指定位置 ont 函數 c/c++ 標準順序容器 容器的訪問,刪除 操作 pop_front:vector,string不支持 pop_back:forward_list不支持 知識點 1,front, back, at
c forEach 遍歷集合中的元素屬性詳解,判斷是否是最後一個元素,
分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
容器篇:取vector最後一個元素的方法
假設我們已經定義了一個vectorT,並存儲有了一定數量的元素,那麼我們取此vector最後一個元素的方法如下: 方法一: vector<T>::iterator pt = vectorT.end()-1; T lastT = *pt; 方法二: vectorT
[面試] C++ STL(一)—— 向一個vector中新增N個元素,平均的新增的效能是?
考慮如下的程式碼輸出: int N = 100; vector<int> v; set<int> s; for (int i = 0; i < N; ++i) { s.insert(v.capacity());
c++ STL 常用容器元素型別相關限制 指標 引用
http://blog.csdn.net/ginewar/article/details/20247215 c+
【C++ STL】容器的選擇
但是 函數 pair list 成員 cto 允許 數據 結構 c++提供了各具特長的容器,那麽我們該如何選擇最佳的容器? 缺省狀態下應該選擇vector,因為vector內部結構最簡單,並允許隨機存取,所以數據的存取十分方便,數據的處理也快。 如果經常要在頭部和尾部安插
C++ STL基本容器的使用
tro 鏈表實現 程序員 位置 style let map容器 數組 ace C++中有兩種類型的容器:順序容器和關聯容器。順序容器主要有vector、list、deque等。其中vector表示一段連續的內存,基於數組實現,list表示非連續的內存,基於鏈表實現,dequ
5.刪除數組arr的最後一個元素,不改變原數組,結果返回新數組。
cnblogs bsp pan arr ast 刪除 let del pop 方法一:slice()方法; var a=[1,5,‘ff‘,‘g‘,‘h‘,‘sd‘,‘g‘]; alert( deletelast(a)); function
php--------刪除數組的第一個元素和最後一個元素
clas bsp ont 數字 courier 過程 返回 nbsp 移動 對於一個php數組,該如何刪除該數組的第一個元素或者最後一個元素呢?其實這兩個過程都可以通過php自帶的函數 array_pop 和 array_shift 來完成,下面就具體介紹一下如何來操作。
C++STL基本容器的使用
類型 ace remove stack urn item ont 插入 one 容器主要分為:順序容器和關聯容器 順序容器和關聯容器,順序容器主要有:vector、list、deque等。其中vector表示一段連續的內存地址,基於數組的實現,list表示非連續的內存,基
c#除掉字符串最後一個字符幾種方法
要去 參數 aaa style log int print mov www 有一數組;轉換為字符串後為 aaa|bbb|ccc|ddd|現要去掉最後一個|第一種方法:語句為:str1=aaa|bbb|ccc|ddd|str=str1.substring(0,lastinde
C++ STL的容器類型
關聯容器 分享圖片 c++ png height wid bubuko c++ stl 圖片 1.順序容器 2.關聯容器 C++ STL的容器類型
C/C++基礎----順序容器
replace sort tails priority str array 有用 top 超出 通常沒有特別的原因,用vector。 list和forward_list有額外的內存開銷,如果有很多小元素,不要使用。 如果只在讀取輸入時需要在容器中間位置插入元素,隨後需要隨機
php獲取數組中的第一個(最後一個)元素
arr red current 元素 一個 fir pop 個數 方式 $array = [‘hello‘,‘world‘,‘cool‘,‘red‘]; 1.第一個元素 $first = array_shift($array); 最後一個元素 $last = arra
PHP獲取數組最後一個元素的鍵和值
ima pan 分享圖片 style php 獲取 end div image <?php /** * PHP獲取數組中最後一個元素下標和值 */ $arr = [‘1‘ => ‘name‘, ‘3‘ => 2, 5 => 6, ‘na
10、【C++ STL】容器適配器(stack queue priority_queue)
pub function 適配 pty str 成員 cto ali The 容器適配器 stack、queue、priority_queue 都不支持任一種叠代器,它們都是容器適配器類型,stack是用vector/deque/list對象創建了一個先進後出容器;qu
c++ stl棧容器stack用法介紹
stack堆疊容器 堆疊是一個線性表,插入和刪除只在表的一端進行。這一端稱為棧頂(Stack Top),另一端則為棧底(Stack Bottom)。堆疊的元素插入稱為入棧,元素的刪除稱為出棧。由於元素的入棧和出棧總在棧頂進行,因此,堆疊是一個後進先出(Last In First