2018-01-12

#漫漫长路C++(一):C++中的vector容器

包含头文件

vector是一个类模板,不是类或者函数。

#include
using std::vector;

定义与初始化

vector int1;
vector int2(int1);
vector int2 = int1;
vector int3( 10 , 1 );//十个一
vector int4(5);//五个值初始化的对象
vector int4{1,2,3,4,5,6};//int4={1,2,3,4,5,6}

vector的常用函数

vector不能用下表来进行元素的添加,常见的操作元素的函数有:

#include 
using namespace std;
ostream &operator<< (ostream &os, vector &a)//重载输出操作符<<
{
    for(auto i : a)
        os< 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< vec(a,a+9);//使用数组的地址作为迭代器
//    sort(vec.begin(), vec.end());   //一定要排序!!!!!!
//    vector::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 来判断容器是否为空

你可能感兴趣的:(2018-01-12)