【C++】vector常用函数总结及其模拟实现

目录

一、vector简介

二、vector的构造

三、vector的大小和容量

四、vector的访问

五、vector的插入

六、vector的删除

简单模拟实现


一、vector简介

vector容器,直译为向量,实践中我们可以称呼它为变长数组。

使用时需添加头文件#include<vector>。

vector使用时需添加数据类型进行模板实例化,如vector<int>。

与其它动态序列容器相比(deque, list and forward_list), vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。比起list和forward_list统一的迭代器和引用更好。

二、vector的构造

  1. vector():生成空数组;
  2. vector(size_type n, const value_type& val = value_type()):生成有n个value元素的一个数组;  
  3. template <class InputIterator>  string  (InputIterator first, InputIterator last):利用迭代器生成数组;
  4. vector (const vector& x):利用数组生成数组;

三、vector的大小和容量

  1. size():返回vector存储的元素个数;
  2. capacity():重新分配内存之前,vector能存储的最大元素数;
  3. reserve(size_t n = 0):修改vector的容量为n,若n大于现有容量,则不进行改变;
  4. resize(size_t n, value_type val = value_type()):修改vector的元素个数,若n小于现有字符个数,对其进行截断,若n大于现有字符串个数,使用val进行填充;
  5. empty():确认容器是否为空,为空则返回true,否则返回false;

四、vector的访问

  1. 使用[ ]:vector支持使用[ ]进行类似于数组的随机访问;
  2. 使用at(size_t pos):类似与[ ],区别为at函数会进行越界检查;
  3. 迭代器与反向迭代器

五、vector的插入

  1. push_back(value_type val):尾插;
  2. insert(iterator pos, value_type val):在pos位置前插入val;
void test()
{
    vector<int> v;

    // 尾插
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    cout<< "v:"; 
    for(auto e : v)
        cout << e << ' ';
    cout << endl;// v:1 2 3
    // 在pos前插入
    s1.insert(s1.begin(),4);
    cout<< "v:"; 
    for(auto e : v)
        cout << e << ' ';
    cout << endl;// v:4 1 2 3
}

六、vector的删除

  1. iterator erase(iterator p):删除vector中p所指的字符
  2. iterator erase(iterator first, iterator last):删除迭代器区间[first,last)上所有元素
  3. string& erase(size_t pos = 0, size_t len = npos):删除从索引位置pos开始的len个元素
  4. void clear():清空容器;


简单模拟实现

参考下面的链接

my_vector · 梁羽赫/cpp_basic - 码云 - 开源中国 (gitee.com)icon-default.png?t=N7T8https://gitee.com/yuhe-liang/cpp_basic/tree/master/my_vector

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值