日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

8、泛型程序设计与c++标准模板库2.4列表容器

發布時間:2024/4/17 c/c++ 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8、泛型程序设计与c++标准模板库2.4列表容器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

列表容器主要用于存放鏈表,其中的鏈表是雙向鏈表,可以從任意一端開始遍歷。列表容器是需要按順序訪問的容器。另外,列表容器不支持隨機訪問迭代器,因此某些算法不能適合于列表容器。列表容器還提供了另一種操作---拼接(splicing),其作用是將一個序列中的元素插入到另一個序列中。其頭文件為<list>

1、列表容器的構造函數

4種形式的構造函數:

list();//構造size()為0的列表容器

list(sizt_type n,const T& v=T());//初始化一個大小為n的列表容器,把列表容器中的每個對象初始化為T()構造的對象

list(const list& x);//按另一個列表容器x初始化列表

list(const_iterator first,const_iterator last);//從另一個支持const_iterator的容器中選取一部分來建立一個新的列表容器

2、使用列表容器

1)訪問列表容器信息

有如下函數可以使用:begin()、end()、rbegin()、rend()、size()、max_size()、empty()、front()和back()等

2)向列表容器中放置元素

與向量和雙端隊列容器一樣,也有insert函數,但是不同的是,列表容器的insert函數不會使任何迭代器或引用變得無效。

列表容器中的拼接函數splice函數就是用來重組列表的,其原型如下:

void splice(iterator it,list& x);//將列表x中的元素插入到當前列表中it之前,刪除x中的元素,使之為空;注意x與當前列表不能是同一個。

void splice(iterator it,list& x,iterator first);//將first所指向的元素從列表x中移出,并插入到當前列表中it之前,x與當前列表可以是同一個,如果it==first或it==++first,則次函數什么也不做。

void splice(iterator it,list& x,iterator first,iterator last);//將范圍[first,last]中的元素從列表x中移出,并插入到當前列表中it之前,x與當前列表可以是同一個,這是范圍[first,last]不能包含it所指的元素

3)刪除列表容器中的元素

與向量和雙端隊列容器一樣,列表容器也提供了erase()成員函數,但是該函數僅刪除指向被刪除元素的迭代器和引用,另外,列表容器的成員函數remove()可以從列表容器中刪除與x相等的元素,同時會減小列表容器的大小,其減小的數量等于被刪除的元素個數,原型如下:

void remove(const T& x);//刪除與x相同的元素

4)例子

#include<iostream>

#include<list>

using namespace std;

int main()

{ ?

list<int> link;//構造一個列表用于存放整數鏈表 ?

int i, key, item; ?

for (i = 0; i < 10; i++)//輸入10個整數依次向表頭插入 ?

{ ??cin >> item; ??

link.push_front(item);

?} ?

cout << "List:";//輸出鏈表

?list<int>::iterator p = link.begin();//迭代器p用于遍歷鏈表 ?

while (p!=link.end()) ?

{ ?

?cout << *p << " "; ?

?p++;//使p指向下一個結點 ?

} ?

cout << endl; ?

cout << "請輸入一個需要刪除的整數:";//輸入需要刪除的整數

?cin >> key;

?link.remove(key); ?

cout << "List:";//輸出鏈表 ?

p = link.begin();//使p重新指向表頭 ?

while (p != link.end())//輸出各結點數據,直到鏈表尾

?{ ??cout << *p << " "; ??p++; ?} ?

getchar(); ?

getchar(); ?

cout << endl;

}

?

轉載于:https://www.cnblogs.com/gary-guo/p/6322258.html

總結

以上是生活随笔為你收集整理的8、泛型程序设计与c++标准模板库2.4列表容器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。