1.1 查
1)輸出全部元素:迴圈、for_each()
2)輸出單個元素:front()返回頭元素,back()返回尾部元素
!!!不支援下標運算和at()函式
例項**:
listlis1(5, 8);
list::iterator ite;
ite = lis1.begin();
//迭代器迴圈,迭代器可以++、--但不能進行加法運算
for (; ite != lis1.end(); ite++)
cout << "\n";
for_each(lis1.begin(), lis1.end(), out);
cout << "\n";
//返回鍊錶的第乙個元素
cout << lis1.front() << endl;
//返回鍊錶的最後乙個元素
cout << lis1.back() << endl;
執行結果:
1.2 增
1)頭增加乙個元素:push_front(val);
2)尾部增加乙個元素:push_back(val);
3)中間插入乙個元素:
insert(ite, val); //在鍊錶的ite位置插入乙個值為val的元素
insert(ite, num, val); //在鍊錶的ite位置插入num個值為val的元素
insert(ite, lis2.begin(), lis2.end()); //在鍊錶的ite位置插入lis2鍊錶的部分元素
listlis1(5, 8);
listlis2(5, 6);
list::iterator ite1;
list::iterator ite2;
ite1 = lis1.begin();
ite2 = lis2.begin();
lis1.push_front(1);
//在鍊錶lis1的頭部新增乙個元素1
lis1.push_back(4);
//在鍊錶lis1的尾部新增乙個元素4
for_each(lis1.begin(), lis1.end(), out);
cout << "\n";
ite1++;
ite1++;
lis1.insert(ite1, 3);
//在鍊錶lis1的ite1的位置處插入乙個元素3
for_each(lis1.begin(), lis1.end(), out);
cout << "\n";
lis1.insert(ite1, 3, 2);
//在鍊錶lis1的ite1的位置處插入3個元素2
for_each(lis1.begin(), lis1.end(), out);
cout << "\n";
ite2++;
ite2++;
ite2++;
lis1.insert(ite1, ite2, lis2.end());
//在鍊錶lis1的ite1的位置處插入鍊錶lis2從ite2開始到末尾的元素
for_each(lis1.begin(), lis1.end(), out);
cout << "\n";
執行結果:
結果分析:
首先在鍊錶的頭部和尾部新增乙個1和乙個4,這沒有什麼說的;在向鍊錶lis1插入元素需注意迭代器指向的位置,同時與vector和string不同的是,list的迭代器不會失效,開始定義ite1指向lis1的第乙個元素8,雖然頭部已增加乙個元素1了,但是迭代器還是指向的原始鍊錶中的第1個8的位置,ite1自加兩次,指向lis1的第3個8的位置處,在此位置插入元素3,因為插入了乙個元素,ite1迭代器也向後移動了一位,指向元素3後面的那個8的位置處,然後插入3個元素2,迭代器移動3位到2後面那個8的位置處了,再插入2個元素6,此時迭代器移到了6後面的那個8的位置處了
1.3 刪
1)頭部刪除:pop_front();
2)尾部刪除:pop_back();
3)刪除指定的元素:erase();
erase(ite); //刪除乙個
erase(ite0, ite1); //刪除一段
4)刪除全部元素:clear();
5)刪除所有引數相同的元素:remove(val);
6)刪除鍊錶中重複的元素:unique();
鍊錶和list
一 stl 的 list 是資料結構的雙向鍊錶,它的記憶體空間可以是不連續的,通過指標來進行資料的訪問,它可以高效率地在任何地方刪除和插入,插入和刪除操作是常數時間的。二 list 和 vector 的優缺點正好相反,它們的應用場景不同。1 vector 插入和刪除操作少,隨機訪問元素頻繁 2 li...
list 鍊錶函式(小結)
先上函式 include include include include include includeusing namespace std struct node typedef struct node list list head null list current null,pre null...
Redis學習 2 鍊錶(list)
鍊錶的使用十分廣泛,甚至很多高階程式語言都內建了這種資料結構。但是c語言卻不沒有。不過c語言編寫的redis卻自己構建了鍊錶這種資料結構在自己內部。127.0.0.1 6379 lpush list a b c d e 向鍊錶中新增a b c d e f integer 5 此時鍊錶中的資料個數 1...