C++ STL 容器部分有關list 連結串列容器的基本操作
阿新 • • 發佈:2019-01-22
#include<iostream> using namespace std; #include "list" //list模型的標頭檔案 /*總結*/ //相當於一個雙向連結串列 //1 list基本與其餘容器模型差不多類似 注意一點就是不允許隨機插入 //2 區間刪除 注意! 如果是l1.erase(0,3); 就會刪除 位置 0 1 2 但是位置3不會被刪除 這就是一個左閉右開區間 【 )(這裡0 3 代表迭代器的位置 ) //3 與其餘容器相同也可以放置類物件,或者指標 //4 有一個remove函式比較特殊 表示刪除連結串列中相同的元素 //5 連結串列的結點index序號是從0號位置開始的 ,例如在3號位置插入,則原來的三號位置會變成4號位置 4號變成5號位置 //list 連結串列模型的基本操作 void main71() { list<int> l1; cout << "list的長度:" << l1.size() << endl; for (int i = 0; i < 10; i++) { l1.push_back(i); //list的尾插法 } list<int>::iterator it = l1.begin(); //有關迭代器的操作 cout << "列印輸出:"; while (it != l1.end()) { cout << *it << " "; it++; } cout << endl; cout << "list的長度:" << l1.size() << endl; //list不允許隨機訪問 it = l1.begin(); //重新定義迭代器 it++; //it = it + 2; //這裡會報錯,說明問題 it = l1.begin(); //重新定義迭代器 此時it指向0號位置 it++; //將迭代器向後加一,指向1號位置 it++; //此時應該指向2號位置 l1.insert(it, 100); //代表在it位置處插入元素100 並且原it位置元素後移一位 cout << "列印插入後的連結串列:" ; list<int>::iterator it1 = l1.begin(); //有關迭代器的操作 while (it1 != l1.end()) { cout << *it1 << " "; it1++; } } //list連結串列的刪除操作 void main72() { list<int> l1; cout << "list的長度:" << l1.size() << endl; for (int i = 0; i < 10; i++) { l1.push_back(i); //list的尾插法 } list<int>::iterator it = l1.begin(); //有關迭代器的操作 list<int>::iterator it1 = l1.begin(); //有關迭代器的操作 cout << "列印輸出:"; while (it != l1.end()) { cout << *it << " "; it++; } cout << endl; //區間刪除 注意! 如果是l1.erase(0,3); 就會刪除 位置 0 1 2 但是位置3不會被刪除 這就是一個左閉右開區間 【 )(這裡0 3 代表迭代器的位置 ) it = l1.begin(); //指向位置0 it1++; it1++; it1++; //移向位置3出 0 1 2 3 l1.erase(it, it1); cout << "列印輸出刪除之後1:"; it = l1.begin(); while (it != l1.end()) { cout << *it << " "; it++; } //指定位置刪除 l1.erase(l1.begin()); //刪除連結串列首個元素 cout << endl; cout << "列印輸出刪除之後2:"; it = l1.begin(); while (it != l1.end()) { cout << *it << " "; it++; } //指定元素刪除 例如刪除所有的3 l1.insert( l1.begin(),3); l1.insert(l1.begin(), 3); l1.insert(l1.begin(), 3); cout << endl; cout << "連結串列的初始化:"; it = l1.begin(); while (it != l1.end()) { cout << *it << " "; it++; } cout << endl; l1.remove(3); //將連結串列中的元素3都刪除 cout << "指定元素刪除之後:"; it = l1.begin(); while (it != l1.end()) { cout << *it << " "; it++; } } int main() { //main71(); //list的基本操作 main72();//list連結串列的刪除操作 system("pause"); return 0; }