c 學習知識點滴記錄 一

2021-10-10 04:51:57 字數 2179 閱讀 9374

這些知識都是從別人關於c++知識的講解而自己手敲的,照著大佬們的敲一遍,加深自己的理解。
map是stl的乙個關聯容器,它提供一對一(其中第乙個可以稱為關鍵字,每個關鍵字只能在map**現一次,第二個可能稱為該關鍵字的值)的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。這裡說下map內部資料的組織,map內部自建一顆紅黑樹(一種非嚴格意義上的平衡二叉樹),這棵樹具有對資料自動排序的功能,所以在map內部所有的資料都是有序的。

下面舉例說明什麼是一對一的資料對映。比如乙個班級種,每個學生的學號跟他的姓名就存在著一一對映的關係,這個模型用map可能輕易描述,很明顯學號用int描述,姓名用字串描述。

map提供了6個建構函式,這塊設計到記憶體分配器這些東西,略過不表。

通常用如下方法構造乙個map:

map<

int,string> mapstudent;

在構造map容器後,我們就可以往裡面插入資料了。

第一種:用insert函式插入pair資料。

#include

#include

#include

using

namespace std;

intmain()

}

另一種寫法:

make_pair();//返回型別為對應的pair型別,無需寫出類別,就可以生成乙個pair物件 ,例如:

make_pair(1,'@');

而不必費力的寫成

pair(1,'@');

第二種:用insert函式插入value_type資料,下面舉例說明

#include

#include

#include

using

namespace std;

intmain()

}

第三種:用陣列方式插入資料,下面舉例說明
#include

#include

#include

using

namespace std;

intmain()

以上三種用法,雖然都可以實現資料的插入,但是它們是有區別的,當然了,第一種和第二種在效果上是完成一樣的,用insert函式插入資料,在資料的插入涉及到集合的唯一性這個概念,即當map中有這個關鍵字時,insert操作時插入不了的,但是用陣列方式就不同了,它可以覆蓋以前該關鍵字對應的關鍵字對應的值。如下:
mapstudent.

insert

(map<

int, string>

::value_type (1,

"student_one"))

; mapstudent.

insert

(map<

int, string>

::value_type (1,

"student_two"))

;

上面這兩條語句執行後,map中1這個關鍵字對應的值是"student_one",第二條語句並沒有生效。那麼這就涉及到我們該怎麼知道insert語句是否插入成功的問題了,可以用pair來獲得是否插入成功,程式如下:
pairint,string>

::iterator,

bool

> insert_pair;

insert_pair = mapstudent.

insert

(map<

int,string>

::value_type(1

,"student_one"))

;

我們可以通過pair的第二個變數知道是否插入成功,它的第乙個變數返回的是乙個map的迭代器,如果插入成功的話insert_pair.second應該是true的,否則為false.
3.map的大小

再往map裡面插入了資料,我們怎麼知道當前已經插入了多少資料呢,可以用size()函式。

Objective C知識點滴記錄

1 方法呼叫基本語法 object method object methodwithinput input 方法可以有返回值 output object methodwithoutput output object methodwithinputandoutput input 還可以呼叫累方法 id...

python知識點滴記錄

1 定義對外暴露的介面,也就是其他模組可以import的東西 2 同時其作用還可以限制別from import 這類引入不必要的成員變數 all foo bar egg 引號巢狀有四種方式 都是雙引號時,前加轉義字元 都是單引號時,前加轉義字元 單引號中巢狀雙引號法。雙引號巢狀單引號。list ar...

C 多型知識點滴

函式的多種不同的實現方式即為多型 在繼承中,有時候基類的一些函式在派生類中也是有用的,但是功能不夠全或者兩者的功能實現方式就是不一樣的,這個時候就希望過載那個基類的函式,但是為了不再呼叫這個函式時,出現不知道呼叫基類的還是子類的情況出現,於是就提出了多型。多型可以說是面象物件語言的強大原因之一。多型...