vector学习

Vector Constructor

#include<iostream>
#include<vector>
using namespace std;

int main(){
    vector<int> a1;//一个为空的vector
    vector<int> a2(4,1);//容量为4,每个元素为1
    for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
    //当i=a2.size()-1时执行换行
    vector<int> a3(a2.begin(),a2.end());//用a2一块区域初始化a3
    for(int i=0;i<a3.size();i++)cout<<a3[i]<<" \n"[i==a3.size()-1];
    int a[]={2,35,23,22234,53232,324};
    vector<int>a4 (a,a+sizeof(a)/sizeof(a[0]));
    for(int i=0;i<a4.size();i++)cout<<a4[i]<<" \n"[i==a4.size()-1];
    return 0;
}

输出·

1 1 1 1
1 1 1 1
2 35 23 22234 53232 324

Vector Capacity

#include<iostream>
#include<vector>
using namespace std;

int main(){
    vector<int> a1;//一个为空的vector
    if(a1.empty())cout<<"不包含元素,为空"<<endl;
    int a[]={2,35,23,22234,53232,324};
    vector<int>a2 (a,a+sizeof(a)/sizeof(a[0]));
    cout<<"a2的包含元素的大小为:"<<a2.size()<<endl;
    cout<<"a2能包含元素的最大容量为:"<<a2.max_size()<<endl;
    cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
    a2.resize(10);//重置大小,多余的为默认值
    for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
    cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
    a2.resize(5);//多于的元素将为析构
    for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
    cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
    a2.reserve(20);//当大于capacity,扩增容量
    for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
    cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
    a2.reserve(10);//当<=capacity,不影响
    for(int i=0;i<a2.size();i++)cout<<a2[i]<<" \n"[i==a2.size()-1];
    cout<<"a2所分配的元素空间大小为:"<<a2.capacity()<<endl;
    return 0;
}

输出

不包含元素,为空
a2的包含元素的大小为:6
a2能包含元素的最大容量为:4611686018427387903
a2所分配的元素空间大小为:6
2 35 23 22234 53232 324 0 0 0 0
a2所分配的元素空间大小为:12
2 35 23 22234 53232
a2所分配的元素空间大小为:12
2 35 23 22234 53232
a2所分配的元素空间大小为:20
2 35 23 22234 53232
a2所分配的元素空间大小为:20

Vector Access

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int n=5;
    vector<int> a1(n);//一个为空的vector
    for(int i=0;i<n;i++)a1.at(i)=2*i;//at获取索引的下标的索引,会自动检查边界
    for(int i=0;i<n;++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
    a1.front()++;//获取a1的第一个元素
    cout<<"a1的第一个元素:"<<a1.front()<<endl;
    a1.back()++;//获取a1最后一个元素
    cout<<"a1的第一个元素:"<<a1.back ()<<endl;
}

输出

0 2 4 6 8
a1的第一个元素:1
a1的第一个元素:9

Vector Modifiers

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int n =5;
    vector<int> a1;//一个为空的vector
    for(int i=0;i<n;i++)a1.push_back(2*i);//向a1的尾部插入一个元素
    for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
    a1.pop_back();//从a1的尾部删除一个元素
    for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
    vector<int>::iterator it=a1.begin();//获取迭代器对象
    //auto it = a1.begin();//使用auto自己推导元素类型
    a1.insert(it+2,3);//向索引为2的位置插入一个与元素,需使用迭代器
    for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
    a1.insert(it+2,2,5);//从索引2开始插入2个5
    for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
    vector<int> a2;
    a2.push_back(21);
    a2.push_back(43);
    a1.insert(it+2,a2.begin(),a2.end());
    for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
    a1.erase(it+1);//删除索引为1的元素
    for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
    a1.erase(it,it+2);//删除[0,2)之间的元素
    for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
    a1.swap(a2);//于a2交换元素
    for(int i=0;i<a1.size();++i)cout<<a1[i]<<" \n"[i==a1.size()-1];//对运算符[]进行重载
    a1.clear();//清空容器元素
    cout<<"a1的元素大小: "<<a1.size()<<endl;
    return 0;
}
0 2 4 6 8
0 2 4 6
0 2 3 4 6
0 2 5 5 3 4 6
0 2 21 43 5 5 3 4 6
2 21 43 5 5 3 4 6
43 5 5 3 4 6
21 43
a1的元素大小: 0

Vector Iterators:

#include<iostream>
#include<vector>
using namespace std;

int main(){
    int n =5;
    vector<int> a1;//一个为空的vector
    for(int i=0;i<n;i++)a1.push_back(2*i);//向a1的尾部插入一个元素
    vector<int>::iterator it;
    for(it=a1.begin();it!=a1.end();it++)cout<<*it<<" \n"[it==a1.end()-1];
    //正向迭代输出元素
    for(vector<int>::reverse_iterator it=a1.rbegin();it!=a1.rend();it++)cout<<*it<<" \n"[it==a1.rend()-1];
    // 反向迭代输出元素
    for(auto a:a1)cout<<a<<" ";
    // auto 可以自己推导出类型
}
0 2 4 6 8
8 6 4 2 0
0 2 4 6 8 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值