Array
Array 為資料結構且跟 Vector 很像,都是裝同一 Type object 的 container。但 Array 為固定大小,所以不能增加 element,但也因為如此有時能提供較好的 run-time performance。
-
Initialize
在 C++ 裡 Array 的 Size 要為 constant expression,也就是 expression 能在 compile time 就算出來。但因為 C 支援在 Array Size 塞變數,所以 G++ 將此寫法視為一個 extension,只要你不在 compile 時強調要遵循 C++ 的 Rule (-pedantic)。
unsigned cnt = 42;
constexpr unsigned sz = 42;
int arr[10];
int *parr[sz];
string bad[cnt];
string strs[get_size()];
int a1[3] = {0, 1, 2};
int a2[] = {0, 1, 2};
int a3[5] = {0, 1, 2};
string a4[3] = {"hi", "bye"};
賦予初始值可用 string 來直接 Initialize。
char a1[] = {'C', '+', '+'};
char a2[] = {'C', '+', '+', '\0'};
char a3[] = "C++";
const char a4[6] = "Daniel";
加入 pointer 和 reference 的宣告
int *ptrs[10];
int &refs[10] = ;
int (*Parray)[10] = &arr;
int (&arrRef)[10] = arr;
int *(&arry)[10] = ptrs;
-
Iterate
這裡紀錄像 Iterator 的方法。arr[10] 是一個不存在的 index 所以只能取 address,所以當 pointer 指到它時就代表此 Array 已結束,類似 begin 跟 end 的方法。但這是較危險的寫法
int arr[] = {0,1,2,3,4,5,6,7,8,9};
int *e = &arr[10];
for (int *b = arr; b != e; ++b)
cout << *b << endl;
有 function 可以直接用。
int arr[] = {0,1,2,3,4,5,6,7,8,9};
int *pbeg = begin(arr);
int *pend = end(arr);
for (int* p = pbeg; p != pend; ++p)
cout << (*p) << endl;
-
Using an Array to Initialize a vector
int int_arr[] = {0, 1, 2, 3, 4, 5};
vector<int> ivec(begin(int_arr), end(int_arr));
vector<int> subVec(int_arr + 1, int_arr + 4);
-
Initializing the Elements of a Multidimensional Array
int ia[3][4] = {
{0, 1, 2, 3},
{4, 5, 6, 7},
{8, 9, 10, 11}
};
int ia[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
int ia[3][4] = {{ 0 }, { 4 }, { 8 }};
int ix[3][4] = {0, 3, 6, 9};
參考資料 :
1.Initializing array with variable vs real number
0 意見:
張貼留言