c 基礎學習筆記(三)

2021-09-26 02:31:49 字數 3164 閱讀 2062

----部分摘自c++菜鳥教程----

map用法

map是c++中的乙個標準容器,她提供了很好一對一的關係,在一些程式中建立乙個map可以起到事半功倍的效果。

map最基本的建構函式;

mapmapstring; mapmapint;

mapmapstring; map< char ,string>mapchar;

mapmapchar; mapmapint;

map新增資料;

mapmaplive;  

maplive.insert(pair(102,"aclive"));

maplive.insert(map::value_type(321,"hai"));

maplive[112]="april";//map中最簡單最常用的插入新增!

map中元素的查詢:

find()函式返回乙個迭代器指向鍵值為key的元素,如果沒找到就返回指向map尾部的迭代器。

map::iterator l_it;; 

l_it=maplive.find(112);

if(l_it==maplive.end())

cout<<"we do not find 112"如果刪除112;

map::iterator l_it;;

l_it=maplive.find(112);

if(l_it==maplive.end())

cout<<"we do not find 112"map中的swap不是乙個容器中的元素交換,而是兩個容器交換;

示例:#include #include using namespace std;

int main()

map的sort問題:

map中的元素是自動按key公升序排序,所以不能對map用sort函式:

示例:

#include #include using namespace std;

int main( )

呼叫時:sort(vec.begin(),vec.end(),comp),這樣就降序排序。

輸出vector的中的元素

vector vecclass;

int nsize = vecclass.size();

//列印vecclass,方法一:

for(int i=0;i需要注意的是:以方法一進行輸出時,陣列的下表必須保證是整數。

//列印vecclass,方法二:

for(int i=0;i//列印vecclass,方法三:輸出某一指定的數值時不方便

for(vector::iterator it = vecclass.begin();it!=vecclass.end();it++)

cout《二維陣列的使用:#include "stdafx.h"

#include #include #include using namespace std;

int main()

; vector v1;

v1.push_back(out[0]);

v1.push_back(out[1]);

v1.push_back(out[2]);

cout << v1[0][0] << endl;//1

cout << v1[0][1] << endl;//2

cout << v1[1][0] << endl;//3

cout << v1[1][1] << endl;//4

cout << v1[2][0] << endl;//5

cout << v1[2][1] << endl;//6

return 0;

}

​ 函式模板

template//型別引數化

//或者

templatevoid myswap(t& a, t& b)

void myswap(int& a, int& b)

void test01()

int main()

a:10  b:20

a:20 b:10

c:10.12 d:20.34

c:20.34 d:10.12

類模板
#include#includeusing namespace std;

templateclass person

void show()

public:

t1 m_id;

t2 m_age;

};int main()

派生類
templateclass person

public:

t m_age;

};templateclass subperson : public person//此處 不能丟

;

類模板.h和.cpp分離
//標頭檔案	person.h

#pragma once

#includeusing namespace std;

templateclass person

;//原始檔 person.cpp 在類模板檔案中一般將 .cpp 改為 .hpp

#include"person.h"

templateperson::person(t age) //此處 不能丟

templatevoid person::show() //此處 不能丟

//原始檔 demo.cpp

#include"person.h" //******

#include/ \

using namespace std; |

|int main() |

類模板中的static關鍵字
templateclass person

;//類外初始化

templateint person::a = 0;

int main()

10 10 10

20 20 20

C 多執行緒基礎學習筆記(三)

一 detach 大坑 由監檢視可知,實參n和形參a的位址並不同,所以實際是值傳遞,並因此最好不要用引用,直接用值傳遞就行了。主線程的str m和str的位址卻相同,那麼當子執行緒和主線程分離時,就會出現問題。這裡講乙個改進的方法,把形參char str改成const string str,即把傳進...

C 學習(三) 基礎(三)

include using namespace std 1 引用的基本語法 引用 給一段記憶體空間起別名 語法 型別 別名 原名 void test1 注意 1 引用必須要初始化 void test2 2 建立乙個對陣列的引用 1 先定義出陣列的型別,在定義引用 陣列型別定義 typedef int...

三 學習筆記 c語言基礎 指標

1.定義指標變數 資料在記憶體中的位址也稱為指標,如果乙個變數儲存了乙份資料的指標,我們就稱它為指標變數。int a 1 int p a 通過指標變數p獲取資料 printf d p 星號 主要有三種用途 1 表示乘法,例如int a 1,b 2,c c a b 這是最容易理解的 2 表示定義乙個指...