vector
vector的动态内存扩展:
当vector对象的存储空间不够时,vector对象会自动使用new运算符申请一块更大的内存空间,使用赋值运算符将原有的数据复制到新存储空间,并释放原有存储空间。
注意:他不是在原有空间之后接新空间,而是找更大的内存空间,然后将原来的数据拷贝到新空间,并释放原空间。
vector遍历方式
1
vector<int>v;
vector<int>::iterator itBegin=v.begin();//起始迭代器,指向容器第一个元素
vector<int>::iterator itEnd=v.end();//结束迭代器,指向容器中最后一个元素的下一个位置
while(itBegin!=itEnd)
{cout<<*itBegin<<endl;
itBegin++;
}
2
for(vector<int>:iterator it=v.begin;it!=v.end();it++)
{
cout<<*it;
}
vector容器构造
1.默认构造vector<int>v1;
2.通过区间构造vector<int>v2(v1.begin(),v1,end())//左闭右开
3.n个elem方式构造
vector<int>v3(10,100);//10个100
vector赋值操作
1.vector&operator=(const vector&vec)//重载等号操作符
vector<int>v1;
vector<int>v2;
v1=v2;
2.assign(begin,end)
vector<int>v3;
v3.assign(v1.begin(),v1.end())
3.assign(n,elem)
vector<int>v4;
v4.assign(10,100);
vector 容量和大小操作
if(v1.empty())//为真,代表容器为空
{
cout<<"容器为空";
}
cout<<v1.capacit();//容量
cout<<v1.size();//大小
容量>=大小
vector 重新指定大小,插入和删除
vector<int>v1.resize(15)
若重新指定的比原来长,默认用0填充
v1.insert(v1.begin(),100)//第一个参数是迭代器
v1.clear()等同于v1.erase(v1.begin,v1.end())//此时是空容器
vector 数据存取
vector<int>v1
for(int i=0;i<10;i++)
{v1.push_back(i);
}
1.at(int idx)
for(int i=0;i<v1.size();i++)
{cout<<v1.at(i)
}
2.operator[]//返回索引
for(int i=0;i<v1.size(),i++)
{cout<<v[i];}
v1.front//第一个元素
v1.end//最后一个元素
容器互换
通过swap实现两容器互换,达到收缩内存的效果。
减少在动态内存扩展容量时扩展的次数