C++標準模版庫(STL)雙向鏈表(list)的使用

雙向鏈表是一個經常使用的數據結構。它並不複雜,若是咱們要本身實現也不是太困難的事情。但既然STL已經給咱們提供了一個,不妨直接用。這樣作,不但省時省力,並且代碼的複用性也好。
數據結構


頭文件與模板類
函數

要想使用STL提供的雙向鏈表,須要包含頭文件spa

#include <list>

這樣,即可以使用模板類list<T>。code


初始化內存

初始化一個list很簡單,用字符串

std::list<T> L;

即可以初始化一個空的鏈表。用string

std::list<T> L{ t1, t2, t3 };

即可以初始化一個有三個元素的鏈表。it

例如,模板

std::list<int> L1{ 20, 13 };

則L1是一個有2個int的鏈表。再例如,class

std::list<std::string> L2{ "實變函數", "泛函分析", "微分幾何", "抽象代數" };

則L2是一個有4個字符串的鏈表。


增、刪元素

list<T>的成員函數push_back,push_front,pop_back,pop_front的做用分別是,在尾部增長元素,在頭部增長元素,在尾部刪除元素,在頭部刪除元素。

前兩個函數的參數類型是(T&&)(C++11的「移動語義」),後兩個函數沒有參數。

這4個函數都沒有返回值。


大小(size)

鏈表的大小指的是這個鏈表中有多少個元素,而不是這個鏈表在內存中佔用多少個字節。

獲取鏈表的大小能夠用list<T>的成員函數size。它沒有參數,返回值爲size_t。


迭代器

迭代器是一個類,它所表達的是一個位置。下面的代碼將L1的全部元素翻倍。

for (auto it = L1.begin(); it != L1.cend(); ++it)
{
    (*it) *= 2;
}


經過迭代器刪除元素

用函數list<T>::erase能夠經過迭代器刪除元素。它的參數爲指向要刪除的元素的迭代器。

相關文章
相關標籤/搜索