#漫漫长路C++(一):C++中的vector容器
包含头文件
vector是一个类模板,不是类或者函数。
#include<vector>
using std::vector;
定义与初始化
vector<int> int1;
vector<int> int2(int1);
vector<int> int2 = int1;
vector<int> int3( 10 , 1 );//十个一
vector<int> int4(5);//五个值初始化的对象
vector<int> int4{1,2,3,4,5,6};//int4={1,2,3,4,5,6}
vector的常用函数
vector不能用下表来进行元素的添加,常见的操作元素的函数有:
#include <algorithm>
using namespace std;
ostream &operator<< (ostream &os, vector<int> &a)//重载输出操作符<<
{
for(auto i : a)
os<<i<<'\t';
// cout<<endl;
return os;
}
int main()
{
vector<int> int1(10,5);
int1.empty();//是否为空
int1.size();//长度
int1.push_back(6);//末尾插入6
int1.pop_back();//删除末尾数据
int1.at(2);//int1[2]
int1.end();//末尾+1指针
int1.begin();//首元素指针
int1.front();//首元素值
int1.back();//末元素值
int1.erase(int1.begin()+3);//删除第四个元素,其余元素前移
int1.clear();//清空
int1.reserve(20);
cout<<int1.capacity()<<'\t'<<int1.size()<<'\t'<< sizeof(int1);
reverse(int1.begin(),int1.end());//颠倒顺序
for(auto &i : int1)
i*=i;
// cout<<i;}
cout<< int1;
// int a[11]= {0,1,2,3,4,8,9,3,5,9,6};
// vector<int> vec(a,a+9);//使用数组的地址作为迭代器
// sort(vec.begin(), vec.end()); //一定要排序!!!!!!
// vector<int>::iterator iter = unique(vec.begin(),vec.end());//创建迭代器,unique函数实现去除相邻元素,返回
// vec.erase(iter,vec.end());//删除去重置于末尾的重复元素
// for( iter = vec.begin() ; iter != vec.end() ; iter ++ )//生成迭代器
// cout<<*iter<<" ";//使用迭代器所指元素引用
return 0;
}
vector的内存管理
vector的size和capibility
http://blog.csdn.net/vampirem_chosen_one/article/details/50519870
原来在使用push_back向vect中插入元素时,如果当前元素数量大于vector的capacity时,会重新为vector分配存储空间,而分配的原则就是:
原capacity + 原capacity / 2
int1.clear();//只删除元素,不释放内存。
vector的使用技巧
尽量使用reserve来减少不必要的内存分配次数。
尽量使用empty而不是size()==0 来判断容器是否为空