如果由我們自己來實現一個鏈表,會寫上不少代碼,包括要實現創建、刪除、插入等等操作。但是如果我們用了STL,那麼該模板庫就為我們提供了一個雙向鏈表list,可以讓我們非常方便的實現鏈表操作。要使用list,首先要引入頭文件 #include .相關的示例代碼上傳至 https://github.com/chenyufeng1991/STL_list 。
(1)創建list
listlist1; // 創建一個空的list list list2(list1); // 復制另一個同類型元素的list list list3(10); // 創建n個元素的list,每個元素值由默認構造函數確定 list list4(10,0); // 創建n個元素的list,每個元素的值為elem
(2)push_back(),尾部插入元素;push_front():頭部插入元素
// 尾部增加一個元素 list1.push_back(2); list1.push_back(4); list1.push_back(6); list1.push_back(8); // 頭部增加一個元素 list1.push_front(3); list1.push_front(5); list1.push_front(7);
(3)pop_back:尾部刪除元素,pop_front:頭部刪除元素
// 刪除尾部元素 list1.pop_back(); PrintList(list1); // 刪除頭部元素 list1.pop_front(); PrintList(list1);
(4)remove():刪除等於某個值的所有元素
// 刪除容器中所有元素等於x的元素 list1.remove(2); PrintList(list1);
(5)insert():在指定位置插入元素
// 在指定位置插入元素x,需要使用迭代器找到該元素 list::iterator listInte = list1.begin(); for (int i = 0; i < 2 && listInte != list1.end(); i++) { listInte++; } list1.insert(listInte, 99); PrintList(list1);
(6)erase():刪除指定位置的元素
// 刪除指定位置的元素 list::iterator listErase = list1.begin(); for (int i = 0; i < 2 && listErase != list1.end(); i++) { listErase++; } list1.erase(listErase); PrintList(list1);
(7)back():訪問鏈表尾部元素;front():訪問鏈表頭部元素;
cout << "尾部元素為:" << list1.back() << endl; cout << "頭部元素為:" << list1.front() << endl;
(8)sort():升序排序;reverse():降序排序
// 升序排序 list1.sort(); PrintList(list1); // 降序排序 list1.reverse(); PrintList(list1);
(9)swap():交換兩個list
(10)clear():清空整個list
// 清空整個鏈表 list1.clear(); PrintList(list1);list中包含0個元素。