array複習劄記1

來源:互聯網
上載者:User

這幾天因為要做一個東西,在使用數組跟指標時出了些問題,於是回過頭來再看了下這方面的知識,發現每看一次都會收穫不小。

C++語言提供了兩種類似於vector和迭代器類型的低級複合類型——數組和指標。與vector類型相似,數組也可以儲存某些類型的一組對象;而它們的區別在於,數組的長度是固定的。數組只要一建立,就不允許添加新的元素。指標則可以像迭代器一樣用於遍曆和檢查數組中的元素。

我對於數組和指標不怎麼喜歡,感覺沒有vector方便,其實現代的C++程式中多數使用vector和迭代器類型,而不怎麼使用低級的數組和指標。在設計程式時,只有在強調速度時才在類實現的內部使用數組和指標。

不管喜不喜歡用它們,都要學好它們,因為有些時候它是解決一些問題的關鍵,正如我現在做的東西,呵呵還是老老實實地把它的用法學好才是硬道理。

顯式初始化數組元素

在定義數組時,可為其元素提供一組用逗號分隔的初值,這些初值用花括弧{}括起來,稱為初始化列表:

const unsigned array_size = 3;int ia[array_size] = {0,1,2};

 如果沒有顯式提供元素初值,則數組元素會像普通變數一樣初始化:

  • 在函數體外定義的內建數組,其元素均初始化為 0;
  • 在函數體內定義的內建數組,其元素無初始化;
  • 不管數組在哪裡定義,如果其元素為類類型,則自動調用該類的預設建構函式進行初始化;如果該類沒有預設建構函式,則必須為該數組的元素提供顯式初始化。

數組操作

與vector元素一樣,數組元素可用下標操作符來訪問,數組元素也是從0開始計數。對於一個包含10個元素的數組,正確的下標值是從0到9,而不是從1到10。

在用下標訪問元素時,vector使用vector::size_type作為下標的類型,而數組下標的正確類型則是size_t。

我下面寫的例子是用for迴圈遍曆數組的10個元素,並以其下標值作為各個元素的初始值:

//數組複習練習#include<iostream>using namespace std;//把數組的下標賦值給數組對應下標的值int main(){const size_t array_size = 10;    //size_t數組下標類型int ia[array_size];              //10 ints,elements are uninitializedcout<<"ai的元素:";        //loop through array,assigning value of its index to each elementfor ( size_t  ix = 0; ix != array_size; ++ix ){ia[ix]  = ix;cout<<ia[ix]<<",";}cout<<endl;return 0;}

 同樣使用以上迴圈還可以實習把一個數組複製給另一數組:

//數組複習練習#include<iostream>using namespace std;int main(){const size_t array_size = 7;int ia1[] = {0,1,2,3,4,5,6};int ia2[array_size];                 //local array,elements unintializedcout<<"ai2的元素:";//copy elements from ia1 into ia2for(size_t ix = 0; ix != array_size; ++ix){ia2[ix] = ia1[ix];cout<<ia2[ix]<<",";}cout<<endl;return 0;}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.