一些有可能會「冷不丁」出現的陣列知識

2022-02-08 06:28:24 字數 1952 閱讀 2434

一、使用陣列初始化 vector 物件

1

const size_t arr_size = 6;2

int int_arr[arr_size] = ;3//

ivec has 6 elements: each a copy of the corresponding element in int_arr

4 vector ivec(int_arr, int_arr + arr_size);

1

//copies 3 elements: int_arr[1], int_arr[2], int_arr[3]

2 vector ivec(int_arr + 1, int_arr + 4);

這個初始化建立了含有三個元素的 ivec,三個元素的值分別是 int_arr[1] 到 int_arr[3] 的副本。

二、多維陣列

嚴格地說,c++ 中沒有多維陣列》_<|||,通常所指的多維陣列其實就是陣列的陣列:

如果表示式只提供了乙個下標,則結果獲取的元素是該行下標索引的內層陣列。

與普通陣列一樣,使用多維陣列名時,實際上將其自動轉換為指向該陣列第乙個元素的指標。

因為多維陣列其實就是陣列的陣列,所以由多維陣列轉換而成的指標型別應是指向第乙個內層陣列的指標。

儘管這個概念非常明了,但宣告這種指標的語法還是不太容易理解:

1

int ia[3][4]; //

array of size 3, each element is an array of ints of size 4

2int (*ip)[4] = ia; //

ip points to an array of 4 ints

3 ip = &ia[2]; //

ia[2] is an array of 4 ints

定義指向陣列的指標與如何定義陣列本身類似:首先宣告元素型別,後接(陣列)變數名字和維數。

竅門在於(陣列)變數的名字其實是指標,因此需在識別符號前加上 *。

如果從內向外閱讀 ip 的宣告,則可理解為:*ip 是 int[4] 型別——即 ip 是乙個指向含有 4 個元素的陣列的指標。

用 typedef 型別定義能夠簡化指向多維陣列的指標。

以下程式用 typedef 為 ia 的元素型別定義新的型別名:

1      typedef int int_array[4

];2 int_array *ip = ia;

可使用 typedef 型別輸出 ia 的元素:

1

for (int_array *p = ia; p != ia + 3; ++p)

2for (int *q = *p; q != *p + 4; ++q)

3 cout << *q << endl;

外層的 for 迴圈首先初始化 p 指向 ia 的第乙個內部陣列,然後一直迴圈到 ia 的三行資料都處理完為止。

++p 使 p 加 1,等效於移動指標使其指向 ia 的下一行(例如:下乙個元素)。

內層的 for 迴圈實際上處理的是儲存在內部陣列中的 int 型元素值。

首先讓 q 指向 p 所指向的陣列的第乙個元素。對 p 進行解引用獲得乙個有 4 個 int 型元素的陣列,

通常,使用這個陣列時,系統會自動將它轉換為指向該陣列第乙個元素的指標。

在本例中,第乙個元素是int型資料,q指向這個整數。系統執行內層的 for 迴圈直到處理完當前 p 指向的內部陣列中所有的元素為止。

當 q 指標剛達到該內部陣列的超出末端位置時,再次對 p 進行解引用以獲得指向下乙個內部陣列第乙個元素的指標。

在 p 指向的位址上加 4 使得系統可迴圈處理每乙個內部陣列的 4 個元素。

PHP一些可能會忽略的問題。。

1.echo和print的區別 php中echo和print的功能基本相同 輸出 但是兩者之間還是有細微差別的。echo輸出後沒有返回值,但print有返回值,當其執行失敗時返回flase。因此可以作為乙個普通函式來使用,例如執行下面的 後變數 r的值將為1。r print hello world ...

軟體測試面試可能會遇到的一些問題

慕曉君最近在找軟體測試的實習,將面臨相關的測試面試,為了給自己一些心理準備,事先想想有哪些可能被問到的問題總是好的。1 軟體測試和軟體開發的關係?答 軟體測試和軟體開發是一種相互促進,相輔相成的關係,軟體開發做得好,軟體測試就可以減少不少工作,軟體測試做得好,可以促進開發工作的進行,還可以保證軟體產...

關於REDIS資料訪問可能會出現的一些問題

當我們把json資料作為value存入redis時,redis會自動的在每個 符號前加上 起到轉譯的作用,並且會對所有的中文字元重新編碼,我們通過工程呼叫redis中的資料,將其取出來,redis會自動將中文字元轉換為原來的編碼方式,同時也會去掉 符號前的 我們在工程中加入一行 在控制台列印出了取出...