vector容器

vector容器

vector介绍:

1.vector是STL标准库中的容器
2.是一个序列式容器
3.里面的底层实现是一个顺序表结构
4.可以动态增长长度的数组

vector的特性:

1.数据自动初始化为0
2.可以动态增长长度(如下图所示)

    int n=10;
    vector<int> vec2(n)={1,2,3,4,5,6,7,8,9,10,};

3.支持随机访问数据
4.对内存边界进行检查
5.自动进行内存的申请和释放
6.vector可以进行自动的进行内存管理,从申请到释放都交给vector底层机制实现,从而程序员在这里插入代码片不用关心内
存的申请释放

迭代器:迭代器(Iterator),提供了访问容器中对象的方法。例如,可以使用一对迭代器指定容器中的一定范围的对象。迭代器就如同一个指针。迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符地方法的类对象;我对迭代器的理解:是一种类的封装。比指针更加安全,不会产生越界。

关于容器的一些函数:

vector数据的访问操作:

    vector<int> vi(10)={1,2,3,4,5,6,7,8,9,10,};
    vi.front();//获取头部元素
    vi.back();//获取尾部元素
    vi.at(3);//相当于[]
    int *p=vi.date();//返回数组指针
    vi.begin();//迭代器首地址
    vi.end();//迭代器结束地址;

vector数据的内存分配:
//初始化一个vector容器;

   vector<int> vec={1,2,3,4,5,6,7,8,9,10,};
    //动态初始化一个vector容器;
    int n=10;
    vector<int> vec2(n)={1,2,3,4,5,6,7,8,9,10,};
    //打印一个vector容器;
    vec.at(3);
    //输出所有vector容器里的数据;
    for(auto i:vec)
    {
        cout<<i<<endl;
    }
    //使用尾插的方法,把数据存入vector中
    vec.push_back(2);
    //将尾部数据删除;
    vec.pop_back();
    vec.insert(vec.begin(), 20);//在第一个位置上插入一个值为20的数
    vec.insert(vec.begin()+3, 33);//在第四个位置上插入值为33的数
    vec.erase(vec.begin()+3);//擦除第四个元素;
    vec. size(); //获取当前大小
    vec.resize(60);//重新调整大小;
    vec.assign(20, 666);//重新分配内存,有重新构造的特点;重新分配长度一定要指定填充数据;
    vec.capacity();//获取世纪的内存空间大小;
    vec.reserve(59);//修改实际内存大小;
    vec.clear();//清除所有数据;

vector 兼容C语言:
vector的特性非常强大了,但是,我们很多情况要使用c语言的数组,可能旧的函数和接口需要调用C语言的
数组函数

data()函数,返回C语言的指针:
int *p=vi.date()
//通过首地址和尾地址,进行拷贝原来的数组
int arr[10] = { 98, 21, 654, 78, 6, 54, 21, 32, 65, 12 };
vector<int> vec2(arr,arr+10);

总结
1.vector的初始化与使用
2.与c的兼容
3.函数
4.迭代器的理解
5,代码的流畅性
6.复习vector迭代器与兼容c的用法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值