C 學習筆記 STL常用容器 list

2021-10-03 09:36:32 字數 2883 閱讀 3366

list容器的功能:將資料進行鏈式儲存。

stl中的鍊錶是乙個雙向迴圈鍊錶。

list的優點:

採用動態儲存分配,不會造成記憶體浪費和溢位;

執行插入和刪除方便,修改指標的指向即可,不需要移動大量元素。

list的缺點:

空間(指標域)和時間(遍歷)耗費較大。

list插入和刪除元素不會造成原有的迭代器的失效。

list建構函式

函式原型:

//list採用採用模板類實現,物件的預設構造形式:

listlst;

//建構函式將[beg, end)區間中的元素拷貝給本身。

list(beg,end);

//建構函式將n個elem拷貝給本身。

list(n,elem);

//拷貝建構函式。

list(const list &lst);

list賦值和交換:

函式原型:

//將[beg, end)區間中的資料拷貝賦值給本身。

assign(beg, end);

//將n個elem拷貝賦值給本身。

assign(n, elem);

//過載等號操作符

list& operator=(const list &lst);

//將lst與本身的元素互換。

swap(lst);

list大小操作:

函式原型:

//返回容器中元素的個數

size();

//判斷容器是否為空

empty();

//重新指定容器的長度為num,若容器變長,則以預設值填充新位置。

// 如果容器變短,則末尾超出容器長度的元素被刪除。

resize(num);

//重新指定容器的長度為num,若容器變長,則以elem值填充新位置。

//如果容器變短,則末尾超出容器長度的元素被刪除。

​resize(num, elem);

list插入和刪除:

函式原型:

//在容器尾部加入乙個元素

push_back(elem);

//刪除容器中最後乙個元素

pop_back();

//在容器開頭插入乙個元素

push_front(elem);

//從容器開頭移除第乙個元素

pop_front();

//在pos位置插elem元素的拷貝,返回新資料的位置。

insert(pos,elem);

//在pos位置插入n個elem資料,無返回值。

insert(pos,n,elem);

//在pos位置插入[beg,end)區間的資料,無返回值。

insert(pos,beg,end);

//移除容器的所有資料

clear();

//刪除[beg,end)區間的資料,返回下乙個資料的位置。

erase(beg,end);

//刪除pos位置的資料,返回下乙個資料的位置。

erase(pos);

//刪除容器中所有與elem值匹配的元素。

remove(elem);

例子:

#include #include using namespace std;

void print_list(const list& list1)

cout// 尾插

list1.push_back(10);

list1.push_back(30);

// 頭插

list1.push_front(15);

list1.push_front(25);

print_list(list1);

// 尾刪

list1.pop_back();

print_list(list1);

// 頭刪

list1.pop_front();

print_list(list1);

// 插入

list::iterator it=list1.begin();

list1.insert(++it,16);

print_list(list1);

// 刪除

it=list1.end();

list1.erase(--it);

print_list(list1);

// 移除

list1.push_front(20);

list1.push_front(20);

list1.remove(20);

print_list(list1);

// 清空

list1.clear();

print_list(list1);

}int main()

list資料訪問:

函式原型:

//返回第乙個元素。

front();

//返回最後乙個元素。

back();

list反轉和排序:

函式原型:

//反轉鍊錶

reverse();

//鍊錶排序

sort();

例子;

#include #include using namespace std;

void print_list(const list& list1)

cout}void test01()

int main()

C 學習筆記 STL常用容器 string

string是c 風格的字串,其本質上是乙個類,內部封裝了很多成員函式。string和char 的區別 1.char 是乙個指標 2.string是乙個類,內部封裝 char 是乙個char 型的容器。string建構函式 函式原型 建立乙個空字串 string 使用字串s初始化 string co...

C 學習筆記 STL常用容器 set和map

set 所有元素在插入時自動排序,底層結構用二叉樹實現。set和multiset的區別 set不允許容器中有重複的元素,multiset允許容器中有重複的元素。set構造和賦值 構造 預設建構函式 setst 拷貝建構函式 set const set st 賦值 過載等號操作符 set operat...

C 學習 STL容器

vector 向量 線性容器 用標準模板,記得加上相應的標頭檔案 include include using namespace std int main 設定向量容量 初始化 v1 0 8 v1 1 8 v1 2 8 宣告迭代器 標準他屬於那個模板 vector iterator v1 iter ...