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

2021-10-03 10:34:50 字數 2961 閱讀 7677

set:

所有元素在插入時自動排序,底層結構用二叉樹實現。

set和multiset的區別:

set不允許容器中有重複的元素,multiset允許容器中有重複的元素。

set構造和賦值:

構造:

//預設建構函式

setst;

//拷貝建構函式

set(const set &st);

賦值://過載等號操作符

set& operator=(const set &st);

set大小和交換:

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

size();

//判斷容器是否為空

empty();

//交換兩個集合容器

swap(st);

set插入和刪除:

//在容器中插入元素。

insert(elem);

//清除所有元素

clear();

//刪除pos迭代器所指的元素,返回下乙個元素的迭代器。

erase(pos);

//刪除區間[beg,end)的所有元素 ,返回下乙個元素的迭代器。

erase(beg, end);

//刪除容器中值為elem的元素。

erase(elem);

例子:

#include #include using namespace std;

void print_set(const set& s)

couts.insert(10);

s.insert(20);

s.insert(15);

s.insert(14);

s.insert(12);

print_set(s);

s.erase(s.begin());

print_set(s);

s.erase(20);

print_set(s);

s.clear();

print_set(s);

}int main()

set查詢和統計:

//查詢key是否存在,若存在,返回該鍵的元素的迭代器;若不存在,返回set.end();

find(key);

//統計key的元素個數

count(key);

pair對組建立:

對於成對出現的資料,利用對組可以返回兩個資料。

兩種建立方式:

pairp ( value1, value2 );

pairp = make_pair( value1, value2 );

例子:

#include #include using namespace std;

void test01()

};void test01()

couts2.insert(15);

s2.insert(10);

s2.insert(20);

s2.insert(16);

for(set::iterator it=s2.begin();it!=s2.end();it++)

cout<map:

map中所有元素都是pair;

pair中第乙個元素為key,起到索引所用,第二個元素為value;

所有元素會根據元素的key進行排序。

本質:底層使用二叉樹實現。

map和multimap區別:

map中不允許容器中有重複key值的元素;

multimap允許容器中有重複key值的元素。

map構造和賦值:

構造://map預設建構函式:

mapmp;

//拷貝建構函式

map(const map &mp);

賦值://過載等號操作符

map& operator=(const map &mp);

map大小和交換:

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

size();

//判斷容器是否為空

empty();

//交換兩個集合容器

swap(st);

map插入和刪除:

//在容器中插入元素。

insert(elem);

//清除所有元素

clear();

//刪除pos迭代器所指的元素,返回下乙個元素的迭代器。

erase(pos);

//刪除區間[beg,end)的所有元素 ,返回下乙個元素的迭代器。

erase(beg, end);

//刪除容器中值為key的元素。

erase(key);

map查詢和統計:

//查詢key是否存在,若存在,返回該鍵的元素的迭代器;若不存在,返回set.end();

find(key);

//統計key的元素個數

count(key);

例子:

#include #include using namespace std;

void print_map(map&m)

void test03(){

mapm;

m.insert(make_pair(1,20));

m.insert(make_pair(2,30));

m.insert(make_pair(3,40));

if(m.find(2)!=m.end()){

cout<<"找到了元素"

C 學習筆記 STL常用容器 string

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

C 學習筆記 STL常用容器 list

list容器的功能 將資料進行鏈式儲存。stl中的鍊錶是乙個雙向迴圈鍊錶。list的優點 採用動態儲存分配,不會造成記憶體浪費和溢位 執行插入和刪除方便,修改指標的指向即可,不需要移動大量元素。list的缺點 空間 指標域 和時間 遍歷 耗費較大。list插入和刪除元素不會造成原有的迭代器的失效。l...

STL學習之set容器

set容器只是單純的鍵的集合。除了兩種例外情況外,set容器支援大部分的map操作。建構函式 cpp view plain copy explicit set const compare comp compare const allocator allocator template class in...