2018-01-12

#漫漫长路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 来判断容器是否为空

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容