Vector
Vector 可以看成是一個動態陣列,用法跟陣列很像
基本功能
push_back: 把一個值加到尾端
pop_back: 把尾端的值移除
size: 得到目前長度
[ ]: 得到某一個位置的值
優點:宣告時可以不用確定大小、可以 Random Access
缺點:在內部進行刪除時效率很低
範例1
#include <vector>
using namespace std;
int main(){
vector<int> vec; // 宣告一個裝 int 的 vector
// 現在 vec 是空的
vec.push_back(10);
vec.push_back(20); // 經過三次 push_back
vec.push_back(30); // vec 是 [10, 20, 30]
int length = vec.size(); // length = 3
for(int i=0 ; i<length ; i++){
cout << vec[i] << endl; // 輸出 10, 20, 30
}
}
範例2
int main(){
vector<int> vec;
for(int i=0 ; i<5 ; i++){
vec.push_back(i * 10); // [0, 10, 20, 30, 40]
}
for(int i=0 ; i<vec.size() ; i++){
cout << vec[i] << endl; // 輸出 0, 10, 20, 30, 40
}
}
範例3
int main(){
vector<int> vec;
for(int i=0 ; i<5 ; i++){
vec.push_back(i * 10); // [0, 10, 20, 30, 40]
}
vec.pop_back(); // 移除 40
vec.pop_back(); // 移除 30
for(int i=0 ; i<vec.size() ; i++){ // vec.size() = 3
cout << vec[i] << endl; // 輸出 0, 10, 20
}
}
Queue:資料以先進先出的方式進出
基本功能
push: 把一個值加到尾端
pop: 把第一個值移除掉
back: 得到尾端的值
front: 得到前端的值
優點:可快速取出前端的值
缺點:只能對前端後尾端的值操作
範例1
#include <queue>
using namespace std;
int main(){
queue<int> q; // 一個空的 queue
q.push(10);
q.push(20);
q.push(30); // [10, 20, 30]
cout << q.front() << endl; // 10
cout << q.back() << endl; // 30
q.pop(); // [20, 30]
cout << q.size() << endl; // 2
範例2
int main(){
queue<int> q; // 一個空的 queue
for(int i=0 ; i<5 ; i++){
q.push(i * 10);
} // [0, 10, 20, 30, 40]
while(q.size() != 0){
cout << q.front() << endl;
q.pop();
} // 依序輸出 0 10 20 30 40
}