在C++標(biāo)準(zhǔn)模板庫(STL)中,std::list 是一個雙向鏈表。由于它的雙向鏈表特性,std::list 支持在任何位置高效地插入和刪除元素。
元素插入:
●使用 push_back() 在列表尾部添加元素;
●使用 push_front() 在列表頭部添加元素;
●使用 insert() 在指定位置插入元素。這需要一個迭代器指向插入點,插入操作之后迭代器將指向新插入的元素。
元素刪除:
●使用 pop_back() 刪除列表尾部元素;
●使用 pop_front() 刪除列表頭部元素;
●使用 erase() 刪除指定位置的元素。這同樣需要一個迭代器指向要刪除的元素;
●使用 remove() 刪除所有與指定值相等的元素。
由于鏈表的每個元素都是獨立的節(jié)點,插入或刪除操作不需要移動其它元素,因此這些操作通常都是常數(shù)時間復(fù)雜度(O(1)),這也是鏈表結(jié)構(gòu)的優(yōu)點之一。
示例應(yīng)用場景:
●當(dāng)實現(xiàn)一個任務(wù)隊列,且任務(wù)有不同的優(yōu)先級時,可以使用 insert() 將高優(yōu)先級的任務(wù)插入到適當(dāng)?shù)奈恢谩?br> ●在游戲開發(fā)中,可能需要管理多個動態(tài)生成和銷毀的對象,使用 std::list 可以有效地插入和刪除這些對象。
示例代碼:
?
#include <list>
#include <iostream>
int main() {
std::list<int> mylist;
// 在列表末尾插入元素
mylist.push_back(1);
mylist.push_back(2);
mylist.push_back(3);
// 在列表頭部插入元素
mylist.push_front(0);
// 在第二個元素之后插入一個元素
auto it = mylist.begin();
std::advance(it, 2);
mylist.insert(it, 5);
// 刪除第二個元素
it = mylist.begin();
std::advance(it, 1);
mylist.erase(it);
// 刪除所有值為3的元素
mylist.remove(3);
// 打印列表的元素
for (int n : mylist) {
std::cout << n << '\n'; // 應(yīng)該打印出 0, 1, 5
}
return 0;
}
在這段代碼中,我們首先在 std::list 的頭部和尾部插入了元素,然后找到了第二個元素的位置并在其后插入了一個新元素,接著刪除了特定位置的元素,最后刪除了所有值為3的元素。文章來源:http://www.zghlxwxcb.cn/news/detail-848911.html
本篇完!文章來源地址http://www.zghlxwxcb.cn/news/detail-848911.html
到了這里,關(guān)于STL--list如何實現(xiàn)元素的插入和刪除的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!