1.vector 構造
int arr[] = { 2,3,4,5 };
vector<int> v(arr, arr + sizeof(arr) / sizeof(int));
vector<int> v(10, 1); 創建10個 1在容器
vector<int> v3; v3.assign(v2.begin(), v2.end()); 將v2給v3
v2.swap(v3); 交換v2 v3
int a= v2.size(); 得到大小
v2.empty(); 判斷是否爲空
v2.rsize(10) 重置容器大小默認0填充,
2.vector 遍歷
使用迭代器 vector<int>::iterator begin 生成迭代器位置
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
vector<int>::iterator begin = v.begin();
vector<int>::iterator end = v.end();
while (begin!=end)
{
cout << *begin <<endl;
begin++;
}
第二種 for 循環方式
for (vector<int>::iterator it=v.begin();it!=v.end(); it++ )
{
cout << *it << endl; }
for_each 算法遍歷
for_each(_InIt _First, _InIt _Last, _Fn _Func) 容器第一個指針 第二個指針 將遍歷得到值傳入一個函數
void Myprint(int value)
{
cout << value << endl;
}
for_each(v.begin(), v.end(), Myprint);
自定義類型遍歷
指針就是存着一個地址, 而這個地址又存着一個具體的值
class Person{
public:
Person(int age)
{
this->age = age;}
int age;};
int main(void) {
Person p1(15);
Person p2(16);
Person p3(17);
vector<Person> v;
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
for (vector<Person>::iterator it=v.begin();it!=v.end(); it++ )
{
cout << it->age<< endl;
cout << (*it).age<< endl;
}
逆序遍歷
for (vector<int>::reverse_iterator it = v.rbegin();it!=v.rend();it++) {}
支持隨機訪問 : vector<int>::iterator begin =v.begin() begin = begin+3 不支持的不能 +
3.vector 數據存取
vector<int> v;
int first = v.front(); 返回第一個數據
int last = v.back(); 返回最後一個數據
插入,刪除最後一個
v.insert(v.begin(), 10); //向V中第一個前面插入 10
v.insert(v.begin(),2, 10); //向V中第一個前面插入兩個 10
v.pop_back(); 刪除最後一個
指定位置刪除
v.erase(v.begin()); 刪除第一個
v.erase(v.begin(),v.end()); 從第一個刪到最後一個
v.clear() 刪除全部
排序
1.sort(v.begin() , v.end()) 默認從小到大 2.自定義規則排序
bool Mycompare(int v1,int v2){
return v1>v2; }
sort(v.begin(), v.end(), Mycompare);
迭代器
普通迭代器 vector<int>::iterator it 反序迭代器: vector<int>::reverse_iterator it 只讀迭代器: vector<int>::const_iterator it