建立 vector
- 引入 vector :
#include <vector>
- 宣告 :
vector<dataType> vec
- 宣告 + 初始化 :
vector<dataType> vec={data1, data2}
使用範例 :
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> vec1;
vector<int> vec2={1,2,3};
return 0;
}
新增及刪除元素
vec.push_back(val)
: 將元素(val) 插入 vector 的尾端vec.insert(position, val)
: 將元素插入指定的位子(position)vec.pop_back()
: 刪除 vector 最尾端的元素vec.erase(position)
: 刪除 vector 中位在 position 的元素vec.erase(first, last)
: 刪除 vector 中在 first~last 的元素vec.clear()
: 清空所有元素
使用範例 :
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3); // vec = 1 2 3
vec.insert(vec.begin(), 4); // vec = 4 1 2 3
vec.pop_back(); // vec = 4 1 2
vec.erase(vec.begin()); // vec = 1 2
vec.clear(); // vec =
}
存取元素
vec.front()
: 取得 vector 的第一個元素vec.back()
: 取得 vector 的最後一個元素vec[i]
: 取得 vector 的第 i 個元素vec.at(i)
: 取得 vector 的第 i 個元素
使用範例 :
#include <iostream>
#include <vector>
using namespace std;
int main(){
int x;
vectorr<int> vec={1,2,3,4,5};
x=vec.front(); // x=1
x=vec.back(); // x=5
x=vec[2]; // x=3
x=vec.at(3); // x=4
return 0;
}
修改元素
vec[i]=val
: vector 的第 i 個元素改成 valvec.at(i)=val
: vector 的第 i 個元素改成 val
使用範例 :
#include <iostream>
#include <vector>
using namespace std;
int main(){
int x;
vectorr<int> vec={1,2,3,4,5};
vec[0] = 100; // vec = 100 2 3 4 5
vec.at(3) = 0; // vec = 100 2 3 0 5
return 0;
}
走訪 vector
下列方法都可以用~
#include <iostream>
#include <vector>
using namespace std;
int main(){
vectorr<int> vec={1,2,3,4,5};
// method 1
for (int i=0; i<vec.size(); i++) {
cout<<vec[i]<<endl;
}
// method 2
for(auto i:vec){
cout<<i<<endl;
}
// method 3
for (auto iter=vec.begin(); iter!=vec.end(); iter++) {
cout<<*iter<<endl; // 需要 dereference
}
return 0;
}
其他
vec.size()
: vector 的大小vec.empty()
: 判斷 vector 是不是空的vec.begin()
: 指向 vector 第一個元素的 iteratorvec.end()
: 指向 vector 最尾端元素的下一個位置的 iterator
使用範例 :
#include <iostream>
#include <vector>
using namespace std;
int main(){
vectorr<int> vec={1,2,3,4,5};
vec.size(); // 5
vec.empty(); // false
*vec.begin(); // 1
return 0;
}