詳解C++數(shù)據(jù)結(jié)構(gòu)向量和數(shù)組
向量
#include,是一個預(yù)處理器指令,它告訴編譯器包含后面的任何庫。在我們的例子中,這是標準vector庫。
- #include <vector>
創(chuàng)建向量的語法如下所示:
- std::vector<type> name;
比如要定義一個int的向量calories_today:
- std::vector<int> calories_today;
尖括號內(nèi)是向量的數(shù)據(jù)類型。尖括號之后是向量的名稱。
注意:vector 的類型(即里面存放的是什么數(shù)據(jù)類型)在聲明后是不能改變的。
初始化向量
- std::vector<double> some_vector = {0.25, 0.50, 0.75, 1.00};
現(xiàn)在我們有了一個向量,我們?nèi)绾卧L問單個元素?這就是索引發(fā)揮作用的地方。
向量是 0 索引的,這意味著第一個元素的索引為 0,第二個索引為 1,依此類推vector[index]在向量名稱和內(nèi)部元素的索引號之后,使用帶方括號的表示法。
- #include <iostream>
- #include <vector>
- int main()
- {
- std::vector<double> some_vector = {0.25, 0.50, 0.75, 1.00};
- std::cout << some_vector[0] << "\n";
- std::cout << some_vector[1] << "\n";
- std::cout << some_vector[2] << "\n";
- std::cout << some_vector[3] << "\n";
- }
- 0.25
- 0.5
- 0.75
- 1
添加和刪除元素
要將新元素添加到向量的末尾,我們可以使用該.push_back()函數(shù)。
- #include <iostream>
- #include <vector>
- int main()
- {
- std::vector<double> some_vector = {0.25, 0.50, 0.75, 1.00};
- some_vector.push_back(2);
- std::cout << some_vector[4] << "\n";
- }
還可以使用.pop_back().從向量的“后面”刪除元素。
- some_vector.pop_back();
向量的大小
.size()函數(shù)返回向量中的元素數(shù)
- #include <iostream>
- #include <vector>
- int main()
- {
- std::vector<double> some_vector = {5,7,9,4,6,8};
- std::cout << some_vector.size() << "\n";
- }
向量操作
我們可以使用for循環(huán),可以更改向量中的每個值
- #include <iostream>
- #include <vector>
- int main()
- {
- std::vector<double> vector = {5, 7, 9, 4, 6, 8};
- for (int i = 0; i < vector.size(); i++)
- {
- vector[i] = vector[i] + 10;
- std::cout << vector[i] << "\n";
- }
- }
- 15
- 17
- 19
- 14
- 16
- 18
編寫一個程序來計算向量中偶數(shù)之和與奇數(shù)之積。
假設(shè)我們有一個向量是{2, 4, 3, 6, 1, 9}。
然后程序應(yīng)該輸出
- Sum of even numbers is 12
- Product of odd numbers is 27
具體代碼如下
- #include <iostream>
- #include <vector>
- int main()
- {
- int total_even = 0;
- int product_odd = 1;
- std::vector<int> vector = {2, 4, 3, 6, 1, 9};
- for (int i = 0; i < vector.size(); i++)
- {
- if (vector[i] % 2 == 0){
- total_even = vector[i] + total_even;
- }else{
- product_odd = vector[i] * product_odd;
- }
- }
- std::cout << "Sum of even: " << total_even << "\n";
- std::cout << "Product of odd: " << product_odd;
- }
數(shù)組
數(shù)組用于在單個變量中存儲多個值,而不是為每個值聲明單獨的變量。
要聲明數(shù)組,請定義變量類型,指定數(shù)組的名稱,后跟方括號 并指定它應(yīng)存儲的元素數(shù):
- int score[4];
我們現(xiàn)在已經(jīng)聲明了一個包含四個int數(shù)組的變量。要向其中插入值,在大括號內(nèi),我們可以使用將值放在逗號分隔的列表中,
- int score[4] = {1,2,3,4}
下面是數(shù)組具體的定義和取值的方式
- #include <iostream>
- using namespace std;
- int main() {
- //定義方式1
- //數(shù)據(jù)類型 數(shù)組名[元素個數(shù)];
- int score[10];
- //利用下標賦值
- score[0] = 100;
- score[1] = 99;
- score[2] = 85;
- //利用下標輸出
- cout << score[0] << endl;
- cout << score[1] << endl;
- cout << score[2] << endl;
- //第二種定義方式
- //數(shù)據(jù)類型 數(shù)組名[元素個數(shù)] = {值1,值2 ,值3 ...};
- //如果{}內(nèi)不足10個數(shù)據(jù),剩余數(shù)據(jù)用0補全
- int score2[10] = { 100, 90,80,70,60,50,40,30,20,10 };
- //逐個輸出
- //cout << score2[0] << endl;
- //cout << score2[1] << endl;
- //一個一個輸出太麻煩,因此可以利用循環(huán)進行輸出
- for (int i = 0; i < 10; i++)
- {
- cout << score2[i] << endl;
- }
- //定義方式3
- //數(shù)據(jù)類型 數(shù)組名[] = {值1,值2 ,值3 ...};
- int score3[] = { 100,90,80,70,60,50,40,30,20,10 };
- for (int i = 0; i < 10; i++)
- {
- cout << score3[i] << endl;
- }
- }
假設(shè)我們有一個數(shù)組是{ 4,2,8,0,5,7,1,3,9 }。編寫一個程序來實現(xiàn)冒泡排序。
具體代碼如下
- #include <iostream>
- using namespace std;
- int main() {
- int arr[9] = { 4,2,8,0,5,7,1,3,9 };
- for (int i = 0; i < 9 - 1; i++)
- {
- for (int j = 0; j < 9 - 1 - i; j++)
- {
- if (arr[j] > arr[j + 1])
- {
- int temp = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = temp;
- }
- }
- }
- for (int i = 0; i < 9; i++)
- {
- cout << arr[i] << endl;
- }
- }
【編輯推薦】