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 

}

  

 

原文链接: https://www.cnblogs.com/alexYuin/p/12076306.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ std::list 和 std::forward_list 的差别及其成员函数差异对比

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/308221

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月16日 上午5:50
下一篇 2023年2月16日 上午5:53

相关推荐