码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【C++】vector常用函数总结及其模拟实现


    目录

    一、vector简介

    二、vector的构造

    三、vector的大小和容量

    四、vector的访问

    五、vector的插入

    六、vector的删除

    简单模拟实现


    一、vector简介

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

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

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

    与其它动态序列容器相比(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  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;
    1. void test()
    2. {
    3. vector<int> v;
    4. // 尾插
    5. v.push_back(1);
    6. v.push_back(2);
    7. v.push_back(3);
    8. cout<< "v:";
    9. for(auto e : v)
    10. cout << e << ' ';
    11. cout << endl;// v:1 2 3
    12. // 在pos前插入
    13. s1.insert(s1.begin(),4);
    14. cout<< "v:";
    15. for(auto e : v)
    16. cout << e << ' ';
    17. cout << endl;// v:4 1 2 3
    18. }

    六、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

  • 相关阅读:
    金山WPS:我们当年上了微软的当,现在终于扳回一局了
    本地项目上传GitLab
    通关GO语言15 运行时反射:字符串和结构体之间如何转换?
    bp神经网络 损失函数,bp神经网络参数优化
    @SpringBootApplication剖析
    【MYSQ精炼系列篇】【MySQL使用】
    十年测试老鸟带你玩转-测试用例
    分布式重点知识总结
    1. 安装Zookeeper
    Verilog刷题[hdlbits] :Always if2
  • 原文地址:https://blog.csdn.net/lyhv_v/article/details/138136905
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号