STL之手撕vector

news/2024/9/25 12:33:01/文章来源:https://www.cnblogs.com/GaogaoBlog/p/18431066

前言

面试的时候遇到了,是从来没想过会出问题的手撕。竟然在面试环节下出了不少纰漏。

要点

  • 构造函数:默认构造、拷贝构造、赋值运算符重载、移动构造函数、析构函数
  • push_back/pop_back

代码

  #include <iostream>using namespace std;#define DEFAULT_CAP (200)class MyVector{private:int* arr;int size;int capacity;void more_capacity() {capacity += DEFAULT_CAP;int *tmp = new int[capacity];for (int i = 0; i < size; ++i) {tmp[i] = arr[i];}delete[] arr;arr = tmp;tmp = nullptr;return;}public:MyVector() {arr = nullptr;size = 0;capacity = 200;return;}MyVector(int _size) {size = _size;capacity = (size < DEFAULT_CAP) ? DEFAULT_CAP : ((size - 1) / DEFAULT_CAP) * DEFAULT_CAP + DEFAULT_CAP;arr = new int[capacity];return;}MyVector(const MyVector& _v) {size = _v.size;capacity = _v.capacity;arr = new int[capacity];for (int i = 0; i < size; ++i) {arr[i] = _v.arr[i];}return;}MyVector(MyVector&& _v) {size = _v.size;capacity = _v.capacity;arr = _v.arr;_v.arr = nullptr;return;}MyVector& operator=(const MyVector& _v) {if (this == &_v) {return *this;}delete[] arr;size = _v.size;capacity = _v.capacity;arr = new int[capacity];for (int i = 0; i < size; ++i) {arr[i] = _v.arr[i];}return *this;}void push_back(int val) {if (size == capacity) {more_capacity();}arr[size++] = val;return;}void pop_back() {--size;return;}void show() {cout << capacity << " " << size << " " << endl;}};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/803443.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB 双活集群在运营商的实践

本文将着重分享某头部运营商订单中心在实现双活架构过程中的最佳实践,提供详细的技术细节和实际案例。通过介绍项目实施过程中的技术细节,提供类似场景需求的方案参考。在现代电信行业中,订单中心作为核心业务系统之一,承担着处理客户订单、管理订单状态、与各个业务系统进…

信创里程碑:TapData 与海量数据达成产品兼容互认证,共同助力基础设施国产化建设

测试结果显示,TapData LDP V3 与 Vastbase G100 V2.2 完全兼容,整体运行稳定高效,性能表现优秀,可为企业级客户提供可靠的中间件与数据库支撑。近日,深圳钛铂数据有限公司(以下简称钛铂数据)自主研发的钛铂实时数据平台(TapData Live Data Platform,TapData LDP)与北…

【日记】感觉自己已经魔怔了(817 字)

正文下午装档案的时候,无意间朝外看了一眼,发现自己视力衰退了好多。感觉两只眼睛都有散光了,看东西有重影。有些担心。兄长血检报告出来了,血红蛋白高,肌酐低。尿酸倒是正常了,但总体还是偏高。我觉得好奇怪,他降尿酸怎么这么难…… 更奇怪的是他说心电图时不紧张,但窦…

DNS正向解析和反向解析的区别

在网络世界中,域名系统(DNS)起着至关重要的作用,它就如同网络世界的导航地图,帮助我们在浩瀚的数字海洋中准确找到目标。而在DNS中,正向解析和反向解析是两个重要的概念,它们有着明显的区别。 首先,正向解析是将域名转换为IP地址的过程。当我们在浏览器中输入一个网址,…

DNS云解析和普通解析一样吗

在当今数字化时代,网络的稳定与高效运行至关重要。域名系统(DNS)作为互联网的基础设施之一,其解析服务的质量直接影响着用户的网络体验。近年来,DNS云解析逐渐兴起,与传统的普通解析相比,它们之间存在着显著的区别。 首先,在可靠性方面,DNS云解析具有明显优势。普通解…

【学习笔记】数学证明方法

持续更新中持续更新中最值定理前提条件: 函数 \(f(x)\) 在区间内是连续的在满足前提的情况下,设区间上界为 \(a\),下界为 \(b\) 那么函数 \(f(x)\) 一定能取到区间 \((a,b)\) 内的所有值介值定理前提条件: 函数 \(f(x)\) 在区间内是连续的当区间 \([a,b]\) 上界为 \(A\),下…

【YashanDB知识库】多表更新报错 YAS-04344 multi-table update is not supported

本文内容来自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369204.html?templateId=1718516 【问题分类】功能使用 【关键字】YAS-04344,UPDATE,multi-table update,MERGE INTO 【问题描述】 在崖山环境执行类似以下语法进行多表更新报 YAS-04344 multi-…

解决方案 | ObjectARX开发版本对照表CAD1997-CAD2025,ObjectARX SDK版本、ObjectARX-Wizards版本、CAD版本、VS版本匹配表

众所周知,在一般情况下,需要ObjectARX SDK版本、ObjectARX-Wizards版本、CAD版本、VS版本版本匹配才能进行CAD二次开发。根据网络数据整理如下。 参考资料:https://blog.csdn.net/zhoufei95/article/details/121553501

【YashanDB知识库】查询YashanDB表空间使用率

本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369203.html?templateId=1718516 【问题分类】功能使用 【关键字】表空间,使用率 【问题描述】YashanDB使用过程中,如何查询表空间的使用率 【问题原因分析】需要查询相应的YashanDB系统表,计算表空…

QT C++ 自学积累 『非技术文』

QT C++ 自学积累 『非技术文』最近一段时间参与了一个 QT 项目的开发,使用的是 C++ 语法,很遗憾的是我之前从来没有接触过 C++ ,大学没有开过这堂课,也没用自己学习过,所有说上手贼慢,到现在为止其实也不是很清楚具体的开发技巧,毕竟是参与,东一复制西一粘贴的,就拉倒…

cameralink卡设计原理图:287-基于FMC接口的1路Base cameralink输入1路Base cameralink输出子卡

基于FMC接口的1路Base cameralink输入1路Base cameralink输出子卡 一、板卡概述 该板卡是我公司自主研发的1路Base cameralink输入,1路Base cameralink输出的FMC子卡,LPC-FMC连接器。FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设备中,特别是在xilinx公司的所…

Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg解决办法

安装docker-compose时候。出现错误 1、在线拉取太费劲。 最后使用的离线安装、、 参考内容。. github手动下载文件:https://github.com/docker/compose/releases/tag/1.25.0-rc4 选择-86版本的内容 将文件上传到/usr/local/bin/ 目录下,重命名为docker-compose,修改文件权限…