
創建
添加
刪除
獲取
取得長度
迭代(迭代器是一種資料形態,其意義為記憶空間位址,使用方法如指標)
input:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> number = {10, 20, 30}; //建立容器
for(auto n : number) { // 利用 for range,可以循序地走訪 vector 中的元素,
cout << n << endl;
}
/*for(int i = 0; i < number.size(); i++) { // 也可以這樣寫,跟上面的效果一樣,number.size()可以取出陣列長度,跟python裡面len()用法很像
cout << number[i] << endl;
}*/
return 0;
}
output:
10
20
30
input:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> number;
for(int i = 0; i < 10; i++) {
number.push_back(i); // 新增元素至最尾端
}
while(!number.empty()) {
int n = number.back(); // 把最後一個元素存到n
number.pop_back(); // 把最後一個元素刪除
cout << n << endl;
}
return 0;
}
output:
9
8
7
6
5
4
3
2
1
0
input:
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> number = {10, 20, 30};
for(vector<int>::iterator it = number.begin(); // 建立一個迭代器,從number的第一個位置開始
it != number.end(); it++) {
auto n = *it; // 取迭代器裡面的值 &是取地址
cout << n << endl;
}
// for(auto n : number) { cout << n << endl;} 這個也等價於上面for迴圈
// 如果使用 #include<algorithm>可以寫成這樣
// for_each(number.begin(), number.end(), [](int n) { cout << n << endl; });
return 0;
}
output:
10
20
30
ref : https://clay-atlas.com/blog/2021/12/17/cpp-2-dimension-vector-initialization/
可以控制多行的初始化,與一行就初始化,但是只能填入同個值
#include <iostream>
#include <vector>
using namespace std;
int main() {
// Settints
int m = 3;
int n = 4;
// Init
vector<vector<int>> matrix(m);
for (int i=0; i<m; ++i) {
matrix[i].resize(n, i+1);
};
// 輸出
//1 1 1 1
//2 2 2 2
//3 3 3 3
vector<vector<int>> matrix(m, vector<int>(n, 1));
// 輸出
//1 1 1 1
//1 1 1 1
//1 1 1 1
vector<int> matrix(3, 4) // 一維初始化 // 4 4 4
}