C++ std::list 和 std::forward_list 的差別及其成員函數差異對比


主要差別:

list 是雙向鏈表,forward_list 是雙向鏈表。

 

成員函數差異:

函數名 list forward_list
back() has no
size() has no
insert() has no
emplace() has no
erase() has no
push_back() has no
emplace_back() has no
splice() has no
     
before_begin() no has
cbefore_begin() no has
insert_after() no has
emplace_after() no has
erase_after() no has
splice_after() no has
     

 

 

 

* forward_list 中設計的一系列 xxx_after() 的原因:

其中的元素僅知道后面的元素,不知道前面的元素。(單向鏈表的特性)所以類似於 insert 這樣的操作,需要指定前一個元素的迭代器,然后執行插入,才可以把整個鏈表連接起來。

https://www.cnblogs.com/wuchanming/p/3915567.html

測試代碼:

#include <iostream>
#include <string>
#include <list>
#include <forward_list>

using namespace std;

int main()
{
	
	list<int>			lis5 = {1,2,3};
	forward_list<int>	flis5 = { 1,2,3 };

	//////////////////////////////////////////////////////////////////////////
	
	lis5.insert(lis5.begin(), 44); // 44 1 2 3, 相當於 “insert_before”,不過並沒有這個函數。
	flis5.insert_after(flis5.begin(), 44); // 1 44 2 3 

}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM