c 指標與集合類介紹使用

2021-08-27 17:56:04 字數 2477 閱讀 3897

c++是乙個重要的工具,涉及到效能問題的都會使用到c++,遺憾的是自己對c++相關的東西不太了解,希望借助這波學習能弄通它。

首先弄懂兩個符號的意思,&、*。

&

每乙個變數都有乙個記憶體位置,每乙個記憶體位置都定義了可使用連字型大小(&)運算子訪問的位址,它表示了在記憶體中的乙個位址。請看下面的例項,它將輸出定義的變數位址

#include 

using

namespace

std;

int main()

*
指標是乙個變數,其值為另乙個變數的位址,即,記憶體位置的直接位址。就像其他變數或常量一樣,您必須在使用指標儲存其他變數位址之前,對其進行宣告。

#include 

using

namespace

std;

int main()

執行結果為

➜  code ./a.out

0x7ffee586f6ac

40

可以看到,p1是位址,*p1就是值了。我們再看看它複雜的使用方式。

#include 

using

namespace

std;

struct info;

int main();

cout

<< p1->a << endl;

cout

<< p1->b << endl;

int *p2;

p2 = &var1;

cout

<< *p2 << endl;

*p2 = 3;

cout

<< *p2 << endl;

delete p2;

delete p1;

}

注意使用g++ -std=c++14 test.cpp進行編譯

#include 

using

namespace

std;

struct info;

void disp(info *p1)

int main();

disp(p1);

delete p1;

}

以上**可以正常執行,同時也可以這樣

#include 

using

namespace

std;

struct info;

void disp(info p1)

int main();

disp(*p1);

delete p1;

}

*p1就是乙個value,而p1是乙個指標。再看看下面的**

#include 

using

namespace

std;

void disp(int *a)

int main()

列印了40

#include 

using

namespace

std;

void disp(int* a)

int main()

列印了0x7ffeef2286cc

可以看到使用&,可以獲取到變數的位址,也就是乙個指標。

下面以map為例子

#include 

#include

using

namespace

std;

void disp(std::map

<:string int> m)

std::cout

<< m.size() << std::endl;

}void del(std::map

<:string int> *m, std::string key)

std::cout

<< m->size() << std::endl;

}int main()

返回結果為

2

key: a

value: 1

key: b value: 2

3key: ab value: 4

key: ac value: 5

key: bc value: 523

22

那c++ std裡面有哪些集合類呢

集合類中還有很多方法,需要在實踐中去運用~慢慢來吧

C 集合類 使用

關聯性集合類即我們常說的鍵值對集合,允許我們通過key來訪問和維護集合。我們來看一下 net 為我們提供了哪些泛型的關聯性集合類 1 dictionary2 sorteddictionary3 sortedlist dictionary dictionary可能是最常用的關聯性集合了,它的訪問,新增...

C 集合介面與集合類

c 開發經常用到.net框架為我們提供的集合介面和集合類,接下來做乙個總結,如有差錯,希望各位大神指正。首先是集合介面,自己畫了一張圖 嘿嘿,有點醜 來說明集合介面的繼承關係。個人覺得,了解集合介面,首先要把握他們的繼承關係。如上圖,所有的集合介面和集合類都繼承 實現ienumerable介面。ie...

C 集合類使用範例

dictionary system.collections.dictionaryentry dic new system.collections.dictionaryentry key1 value1 arraylist system.collections.arraylist list new s...