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 

}

  

 

posted @ 2019-12-21 11:01  路边的十元钱硬币  阅读(1620)  评论(1编辑  收藏  举报