STL 是 C++ 提供的一套標準模板函式庫
全名是 Standard Template Library
一.Vector
Vector 可以看成是一個動態陣列 ,用法跟陣列很像
不須事先宣告vector的大小,可以利用索引值直接存取指定的資料
基本功能有 :
push_back: 把一個值加到尾巴
pop_back: 把尾巴的值移除掉
size: 得到目前長度
[]: 得到某一個位置的值
函式
宣告
vector<類型> 名稱;
範例1
#include <iostream>
#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
}
}
作業
寫一個可以輸入姓名和成績多次的程式,使用vector儲存姓名和成績,當姓名輸入0時結束輸入,並顯示vector的內容
請交exe執行檔
參考答案
#include <vector>
#include <iostream>
using namespace std;
int main(){
bool end=false;
vector<string> name;
vector<int> grade;
string n;
int g;
while(!end){
cout<<"請輸入姓名:";
cin>>n;
if(n!="0"){
cout<<"請輸入成績:";
cin>>g;
name.push_back(n);
grade.push_back(g);
}else{
end=true;
for(int i=0 ; i<name.size() ; i++){
cout << name[i] <<":"<<grade[i]<<endl;
}
}
}
}