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