一、編寫一段程式,用整形陣列初始化乙個vector物件。
#include #include #include using namespace std;
int main()
;vectorv1(a, a + 10);
for (int i = 0; i < 10; i++)
}
二、編寫一段程式,將含有整數元素的vector物件拷貝給乙個整型陣列。
#include #include #include using namespace std;
int main()
}
三、多維陣列
(1)嚴格意義上講,c++語言沒有多維陣列,通常所說的陣列其實是陣列的陣列。
(2)當乙個陣列的元素仍然是陣列時,通常使用兩個維度來定義它:乙個維度表示陣列本身的大小,另外乙個維度表示其元素(也是陣列大小):
例子:int ia [3] [4]; //它定義了乙個大小為3的陣列,該陣列的每個元素是含有4個整數的陣列。
(3)多維陣列的初始化
第一種方式: int ia[3] [4] = ,,};
第二種方式:int ia[3] [4]=;(我們一般習慣的用法)
(4)多維陣列中我們僅僅想初始化每一行的第乙個元素
int ia [3] [4]=,,[8}};
int ix [3] [4] = ;
這個時候如果去掉花括號結果就不一樣了,這裡的含義為:它初始化的第一行的4個元素,其它元素別初始化為0。
(5)定義指向多維陣列的指標時,千萬不要忘記這個多維陣列實際上時陣列的陣列。
例子: int ia [3] [4]; //大小為3的陣列,每個元素是含有4個整數的陣列
int (*p) [4] = ia; //p指向含有4個整數的陣列
p=&ia [2]; //p指向ia的尾元素
因此:p就是指向含有4個整數的陣列的指標
四、習題答案:
(1)編寫三個不同版本的程式,令其均能輸出ia的元素,版本一是使用範圍for語句管理迭代過程;版本二和版本三是使用普通的for語句,其中版本2要求用下邊運算子,版本3要求用指標,三種版本要求都要直接寫出資料型別,而不能使用型別別名,auto關鍵字,或者是decltype關鍵字。
#include #include using namespace std;
int main()
;for (const int(&p)[4] : ia)
for (int q : p) cout << q << " ";
cout << endl;
for (size_t i = 0; i != 3; ++i)
for (size_t j = 0; j != 4; ++j) cout << ia[i][j] << " ";
cout << endl;
for (int(*p)[4] = ia; p != ia + 3; ++p)
for (int* q = *p; q != *p + 4; ++q) cout << *q << " ";
cout << endl;
system("pause");
return 0;
}
(2)改寫上乙個練習中的程式,使用型別別名來替代迴圈控制變數的型別。
#include #include using namespace std;
int main()
;using int_array = int[4];
for (int_array& p : ia)
for (int q : p) cout << q << " ";
cout << endl;
for (size_t i = 0; i != 3; ++i)
for (size_t j = 0; j != 4; ++j) cout << ia[i][j] << " ";
cout << endl;
for (int_array* p = ia; p != ia + 3; ++p)
for (int* q = *p; q != *p + 4; ++q) cout << *q << " ";
cout << endl;
system("pause");
return 0;
}
(3)改寫上一程式,這次使用auto 關鍵字。
#include #include using namespace std;
int main()
;// a range for to manage the iteration
for (auto& p : ia)
for (int q : p) cout << q << " ";
cout << endl;
// ordinary for loop using subscripts
for (size_t i = 0; i != 3; ++i)
for (size_t j = 0; j != 4; ++j) cout << ia[i][j] << " ";
cout << endl;
// using pointers.
for (auto p = ia; p != ia + 3; ++p)
for (int* q = *p; q != *p + 4; ++q) cout << *q << " ";
cout << endl;
system("pause");
return 0;
}
五、總結
第三章主要是介紹三類基本的容器:vector、陣列、string。幾點比較重要的指示:迭代器的使用、指標與陣列和vector的關係、命名空間的了解較為基礎。
第三章 棧 佇列 陣列
1.假設棧初始為空,將中綴表示式 這題和上題區別就是rear指向隊尾元素,而不是隊尾元素的下乙個元素 4.設有下圖所示的火車車軌,入口到出口之間有n條軌道,列車的行進方向均為從左至右,列車可駛入任意一條軌道。現有編號為1 9的9列列車,駛入的次序依次是8,4,2,5,3,9,1,6,7。若期望駛出的...
第三章 堆疊
1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...
第三章 曙光
第三章 曙光 第二場校園招聘開始了。其實,洋對這個公司的不是很了解。因為前幾天突然在bbs上面看到了這個公司的招聘資訊,洋覺得這個公司不錯,就上網投了簡歷。接下來的乙個多小時,讓洋很震撼!想不到這個公司這個厲害,而且無論從哪方面來說,絕對不比之前的那個公司差。想不到自己的乙個不經意的決定到了這個大的...