map以及使用舉例 C 基礎

2021-10-05 11:23:06 字數 1466 閱讀 6760

關聯式容器:

map的特性就是所有元素都會根據元素的key被自動排序,map的所有元素是同時擁有key和value。map不允許兩個元素有相同的key。而當map同時擁有key和value的時候,它的迭代器可以修改其中的內容嗎?key不可以,因為key是用來排列資料的,但是value的值就可以改變了。

當我做到set的測試時候,我想著能不能傳乙個結構體進來,進行set操作,看看會發生什麼,沒想到連編譯都通不過,實在是想多了,但是map好像可以很簡單的實現這個想法欸!

示例**:

#include

"test.h"

#include

#include

#include

//為了使用find、sort等方法

void

main()

int number = v1[

string

("kooknut")]

; v1.

erase

(string

("tanney"))

; map

int>

::iterator v3 = v1.

find

(string

("fgnney"))

; v3-

>second =99;

//修改value

//v3->first = string("fddd");

getchar()

;}

自動按照key值排序

key值不可以修改

自然的,有multiset就有multimap,multimap的特性以及用法與map完全相同,唯一的區別在於它允許key重複。

簡單修改:

void

main()

v1.erase

(string

("tanney"))

; map

int>

::iterator v3 = v1.

find

(string

("fgnney"))

; v3-

>second =99;

//修改value

「有志者,事竟成,破釜沉舟,百二秦關終屬楚;

苦心人,天不負,臥薪嘗膽,三千越甲可吞吳。」

參考書籍:

《stl原始碼剖析》

deque以及使用舉例 C 基礎

序列式容器 vector是單向開口的連續線性空間,deque是一種雙向開口的連續線性空間。所謂雙向開口,意思就是可以在頭尾兩端分別做元素的插入和刪除操作。deque和vector的最大差異 deque是一段一段的定量連續空間組成的,需要維護這些定量空間所需要的內部資料結構肯定是要比vector複雜許...

C協程使用舉例

c協程使用舉例 sniperhw 基本思想是,建立乙個排程器,用於將處於活動狀態的協程排程執行,排程器維護著乙個actived列表,呼叫spawn建立協程時,將新建立的協程新增到活動列表中。呼叫schedule將啟動排程器主迴圈.coro.h ifndef coro h define coro h ...

C 的map介紹以及插入操作

一 點睛 map是stl的乙個關聯容器,它提供一對一 其中第乙個稱為關鍵字,每個關鍵字只能在map 現一次,第二個稱為該關鍵字的值 的資料處理能力。map內部自建一顆紅黑樹 一 種非嚴格意義上的平衡二叉樹 這顆樹具有對資料自動排序的功能,所以在map內部所有的資料都是有序的。1 map簡介 map是...