主要差別:
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
}
