我的128天创作之路:回顾与展望
大家好呀!今天来和你们分享一下我的创作历程😁。
一、机缘
最开始创作呢,是因为在学习 C++ 的 STL 时,像 string、list、vector 这些模板可把我折腾得够呛,但也让我学到了超多东西!我就想,要是把我对它们的理解和实践经验写下来,既能巩固自己的知识,又能帮到其他正在学习的小伙伴,多好呀!于是,我就满怀热情地踏上了创作之路,希望能在这个平台上和大家一起进步,愉快地交流技术🤝。
二、收获
在创作的过程中,真的收获满满!我的文章有了不少阅读量,每次看到有小伙伴看我的分享,心里就特别开心😄。还有读者给我点赞👍和评论,这些都给了我极大的鼓励,让我知道我的努力是有价值的。通过和读者互动,我还结识了好多志同道合的朋友,我们一起探讨技术难题,让我的技术视野变得更开阔啦!
多家社区收录文章
获得官方奖励
全站热榜第一
三、日常
现在,创作已经成为我生活中不可或缺的一部分啦。坚持每俩天创作一篇,虽然平时工作和学习挺忙的,但我会合理安排时间,利用业余时间来创作。我发现创作和工作学习是相互促进的,在创作时,我会对知识进行更深入的思考和总结,这让我的专业能力不断提升;而工作学习中的新收获又为我的创作提供了丰富的素材,真是太棒啦!
四、成就
在学习 C++ 的过程中,我成功实现了一些 STL 模板的功能哦,给大家展示一下部分关键代码,并加上注释方便理解。
首先是 MyString
类,它类似于 std::string
:
#include <iostream>
#include <cstring>class MyString {
private:char* data;size_t len;public:MyString() : data(nullptr), len(0) {}MyString(const char* str) {len = std::strlen(str);data = new char[len + 1];std::strcpy(data, str);}~MyString() {delete[] data;}size_t length() const {return len;}char& operator[](size_t index) {return data[index];}const char& operator[](size_t index) const {return data[index];}MyString& operator=(const MyString& other) {if (this!= &other) {delete[] data;len = other.len;data = new char[len + 1];std::strcpy(data, other.data);}return *this;}MyString operator+(const MyString& other) const {char* newData = new char[len + other.len + 1];std::strcpy(newData, data);std::strcat(newData, other.data);MyString result(newData);delete[] newData;return result;}
};
接着是 MyList
类,类似 std::list
,这里展示节点、迭代器的定义和插入操作:
// 链表节点结构体模板,存储数据和前后指针
template<typename T>
struct ListNode { T data;ListNode<T>* next;ListNode<T>* prev;ListNode(const T& value) : data(value), next(nullptr), prev(nullptr) {}
};// 链表迭代器模板类,用于遍历链表
template<typename T>
class ListIterator {
private:ListNode<T>* node;public:// 构造函数,初始化迭代器指向的节点ListIterator(ListNode<T>* n) : node(n) {} // 重载解引用运算符,返回当前节点存储的数据T& operator*() { return node->data;}// 前置递增运算符重载,将迭代器指向下一个节点ListIterator<T>& operator++() { node = node->next;return *this;}// 比较运算符重载,判断两个迭代器是否不相等bool operator!=(const ListIterator<T>& other) { return node!= other.node;}
};// 自定义链表类模板
template<typename T>
class MyList {
private:ListNode<T>* head; // 链表头节点指针ListNode<T>* tail; // 链表尾节点指针public:MyList() : head(nullptr), tail(nullptr) {}~MyList() {// 释放链表所有节点的内存while (head!= nullptr) { ListNode<T>* next = head->next;delete head;head = next;}}// 在链表尾部插入元素void push_back(const T& value) { ListNode<T>* newNode = new ListNode<T>(value);if (tail == nullptr) {head = tail = newNode;} else {newNode->prev = tail;tail->next = newNode;tail = newNode;}}// 返回链表的起始迭代器ListIterator<T> begin() { return ListIterator<T>(head);}// 返回链表的结束迭代器(指向空节点)ListIterator<T> end() { return ListIterator<T>(nullptr);}
};
还有 MyVector
类,类似 std::vector
,比如构造函数、扩容机制和元素访问:
// 自定义向量类模板
template<typename T>
class MyVector {
private:T* data; // 存储元素的数组size_t capacity; // 向量的容量size_t size; // 向量中实际元素的个数// 扩容函数,重新分配内存并复制元素void resize(size_t newCapacity) { T* newData = new T[newCapacity];for (size_t i = 0; i < size; ++i) {newData[i] = data[i];}delete[] data;data = newData;capacity = newCapacity;}public:MyVector() : data(nullptr), capacity(0), size(0) {}// 带初始容量的构造函数MyVector(size_t initialCapacity) : capacity(initialCapacity), size(0) { data = new T[capacity];}~MyVector() {delete[] data;}// 在向量尾部插入元素,如果容量不足则扩容void push_back(const T& value) { if (size == capacity) {resize(capacity == 0? 1 : capacity * 2);}data[size++] = value;}// 重载下标运算符,用于访问向量中的元素(非 const 版本)T& operator[](size_t index) { return data[index];}// 重载下标运算符,用于访问向量中的元素(const 版本)const T& operator[](size_t index) const { return data[index];}// 返回向量中实际元素的个数size_t length() const { return size;}
};
这些实现虽然只是基础的框架,但在学习过程中对我理解 STL 的原理帮助很大,也让我的技术水平提升了不少呢!
五、憧憬
在未来,我希望能在技术领域继续深入学习和实践,把这些实现进一步优化,然后分享给更多的小伙伴。在职业规划上,我想成为一名厉害的软件工程师,用我的技术解决实际问题,为项目出份力💪。我也会坚持创作,不断提高写作能力和技术水平,给读者带来更有价值的内容。我相信只要努力,一定能实现目标的,加油!
欢迎关注,让我们共同进步👉【A charmer】
相关文章:
![](https://i-blog.csdnimg.cn/direct/90c5b23f47794474b4b59894a8da52b9.jpeg)
我的128天创作之路:回顾与展望
大家好呀!今天来和你们分享一下我的创作历程😁。 一、机缘 最开始创作呢,是因为在学习 C 的 STL 时,像 string、list、vector 这些模板可把我折腾得够呛,但也让我学到了超多东西!我就想,要是把我…...
![](https://www.ngui.cc/images/no-images.jpg)
内核配置参数整理
#参考网页 linux5.2 <.config>文件注释 详细解释 CONFIG_ARMy:启用ARM架构支持,这是ARM处理器专用的内核配置选项。 CONFIG_ARM_HAS_SG_CHAINy:启用对散列表(scatter-gather)链的支持…...
![](https://www.ngui.cc/images/no-images.jpg)
SpringBoot整合Easy-es
一.什么是Easy-Es Easy-Es(简称EE)是一款基于ElasticSearch(简称Es)官方提供的RestHighLevelClient打造的ORM开发框架,在 RestHighLevelClient 的基础上,只做增强不做改变,为简化开发、提高效率而生,您如果有用过Mybatis-Plus(简称…...
![](https://i-blog.csdnimg.cn/direct/27676eb5156246bdbf25f334e72fe411.gif)
于交错的路径间:分支结构与逻辑判断的思维协奏
大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。* 这一节内容很多,文章字数达到了史无前例的一万一,我们要来学习分支与循环结构中…...
![](https://i-blog.csdnimg.cn/direct/909589fb70894a17958d2b10996fdae8.png)
Linux之读者写者模型与特殊锁的学习
目录 读者写者模型 特殊锁 悲观锁 自旋锁 在前几期,我们学习了多线程的生产者和消费者模型,生产者和消费者模型中,有三种关系,两个角色,一个场所,那么读者写者模型和生产者消费者模型有什么关联吗&…...
![](https://i-blog.csdnimg.cn/direct/ce417c02ea964b30afa27778c56ee574.png)
回溯专题 记录
回溯的题目按照这套模板进行; 我感觉整体逻辑还是递归,只不过有了pop_back才是回溯概念; class Solution {public:vector<int> path;vector<vector<int>> ans;void backtracking(int n,int k,int startindex){if(path.…...
![](https://www.ngui.cc/images/no-images.jpg)
使用 Python 实现自动化办公(邮件、Excel)
目录 一、Python 自动化办公的准备工作 1.1 安装必要的库 1.2 设置邮件服务 二、邮件自动化处理 2.1 发送邮件 示例代码 注意事项 2.2 接收和读取邮件 示例代码 三、Excel 自动化处理 3.1 读取和写入 Excel 文件 示例代码 3.2 数据处理和分析 示例代码 四、综合…...
![](https://img-blog.csdnimg.cn/ddae5ec769454d438756891777ea13fd.png)
贪心算法笔记
贪心算法笔记 大概内容 贪心就是对于一个问题有很多个步骤,我们在每一个步骤中都选取最优的那一个,最后得出答案。就是在一些函数中可行,但是有些比如二次函数,因为它的转折点不一定最优,就是不可行的。那么如何判断贪心呢?有这么几种 看时间复杂度,一般的就是 O ( n…...
![](https://i-blog.csdnimg.cn/direct/aff0a5264b864df18440e4d1c2a93231.png)
Formality:两种等价状态consistency和equality
相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 背景 逻辑锥的等价性检查时,存在两种验证模式:一致(consistency)和等同(equality),要理解这两点,首先得明白综合工具…...
![](https://i-blog.csdnimg.cn/direct/90e8820edd4e4be385d9281489290d81.png)
Java Web开发基础:HTML的深度解析与应用
文章目录 前言🌍一.B/S 软件开发架构简述🌍二.HTML 介绍❄️2.1 官方文档❄️2.2 网页的组成❄️2.3 HTML 是什么❄️2.4html基本结构 🌍三.HTML标签1.html 的标签/元素-说明2. html 标签注意事项和细节3.font 字体标签4.标题标签5.超链接标签…...
![](https://www.ngui.cc/images/no-images.jpg)
第30章 汇编语言--- 性能优化技巧
汇编语言是用于直接编程计算机硬件的低级语言,它几乎是一对一地映射到机器指令。因为汇编代码与特定处理器架构紧密相关,所以在讨论性能优化技巧时,通常需要考虑具体的CPU架构和指令集。 以下是一些通用的汇编语言性能优化技巧,并…...
![](https://i-blog.csdnimg.cn/direct/434216f11bd74ed0a1450bb89e23822d.png)
HTB:Paper[WriteUP]
目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 对靶机进行子域…...
![](https://www.ngui.cc/images/no-images.jpg)
数据库中的 DDL、DML 和 DCL
数据库中的 DDL、DML 和 DCL 在数据库的定义与操作中,DDL、DML 和 DCL 是三个核心概念,分别用于不同层面的数据库管理与操作。 1. DDL(Data Definition Language) - 数据定义语言 定义 DDL 用于定义和管理数据库的结构或模式。…...
![](https://i-blog.csdnimg.cn/img_convert/e41e4025b5ce70fdb0409fda9733e920.png)
OKR 极简史及理解
大家读完觉得有帮助记得点赞和关注!!! 目录 MBO SMART 和 KPI OKR 1. 什么是 OKR? 1.1 Objectives(目标) 1.2 Key Results(关键成果) KR 应当是困难的,但并非不可…...
![](https://www.ngui.cc/images/no-images.jpg)
电商项目-基于ElasticSearch实现商品搜索功能(四)
一、 高亮显示 1.1 高亮分析 高亮显示是指根据商品关键字搜索商品的时候,显示的页面对关键字给定了特殊样式,让它显示更加突出,如商品搜索中,关键字变成了红色,其实就是给定了红色样式。 1.2 高亮搜索实现步骤解析 …...
![](https://www.ngui.cc/images/no-images.jpg)
TCP封装数据帧
void *send_data(void *arg) //这是一个发送数据的线程 {int sockfd init_tcp_cli("192.168.0.148",50000) //传ip和port,port 50000是因为大概前五万都被其它服务所占用,50000后是私人ipif(sockfd < 0){return NULL;}unsigned char …...
![](https://www.ngui.cc/images/no-images.jpg)
数据结构与算法之二叉树: LeetCode 515. 在每个树行中找最大值 (Ts版)
在每个树行中找最大值 https://leetcode.cn/problems/find-largest-value-in-each-tree-row/description/ 描述 给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值 示例1 输入: root [1,3,2,5,3,null,9] 输出: [1,3,9]示例2 输入: root [1,2,3]…...
![](https://i-blog.csdnimg.cn/img_convert/58c50feb04c80020ab36605223d99631.jpeg)
百度视频搜索架构演进
导读 随着信息技术的迅猛发展,搜索引擎作为人们获取信息的主要途径,其背后的技术架构也在不断演进。本文详细阐述了近年来视频搜索排序框架的重大变革,特别是在大模型技术需求驱动下,如何从传统的多阶段级联框架逐步演变为更加高…...
![](https://www.ngui.cc/images/no-images.jpg)
构造函数的原型原型链
代码示例 // 定义一个构造函数 Test function Test() {this.name 张三 }; //向构造函数的原型添加一个属性 age18 Test.prototype.age 18;//使用构造函数 Test 来实例化一个新对象 const test new Test();//向 Object.prototype 添加了一个名为 sex 的属性,其值…...
![](https://i-blog.csdnimg.cn/direct/a41e6365f39c44e2a98cb6b0eddffcfb.png)
nginx反向代理及负载均衡
华子目录 nginx反向代理功能http反向代理反向代理配置参数proxy_pass的注意事项案例:反向代理单台后端服务器案例:反向代理实现动静分离案例:反向代理的缓存功能非缓存场景下测压准备缓存缓存场景下测压验证缓存文件 反向代理负载均衡&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
单片机实物成品-011 火灾监测
火灾监测(20个版本) 版本20: oled显示温湿度烟雾浓度火焰传感器天然气浓度窗户风扇水泵排气系统声光报警语音播报按键WIFI模块 ----------------------------------------------------------------------------- https://www.bilibili.com…...
![](https://www.ngui.cc/images/no-images.jpg)
使用 Docker 在 Alpine Linux 下部署 Caddy 服务器
简介 在现代 web 开发中,选择合适的 web 服务器至关重要。Caddy 是一个功能强大的现代化 HTTP/2 服务器,支持自动 HTTPS,配置简单,适合开发和生产环境。Docker 则为我们提供了一种轻量级的容器化技术,使得应用程序的部…...
![](https://i-blog.csdnimg.cn/direct/cee1f26134ca488097f64e7960df05bf.png)
每日十题八股-2025年1月12日
1.为什么四次挥手之后要等2MSL? 2.服务端出现大量的timewait有哪些原因? 3.TCP和UDP区别是什么? 4.TCP为什么可靠传输 5.怎么用udp实现http? 6.tcp粘包怎么解决? 7.TCP的拥塞控制介绍一下? 8.描述一下打开百度首页后发生的网络过…...
![](https://i-blog.csdnimg.cn/direct/dabbade1a64949d59c3218cdd20f792f.png)
Python中定位包含特定文本信息的元素
目录 一、为什么需要定位包含文本信息的元素 二、使用Selenium定位包含文本的元素 1. 使用find_element_by_link_text 2. 使用find_element_by_partial_link_text 3. 使用XPath定位包含文本的元素 4. 使用CSS选择器定位包含文本的元素 三、使用BeautifulSoup定位包含文本…...
![](https://i-blog.csdnimg.cn/direct/a3fd72bf23744ea0b4f5e5684b98698f.png)
uniapp实现H5页面内容居中与两边留白,打造类似微信公众号阅读体验
在 UniApp 中,由于需要兼容多端应用,我们通常使用 rpx 作为尺寸单位。然而,在某些情况下,如需要实现内容居中且两边留白时,直接使用 rpx 可能会带来一些限制。这时,我们可以考虑使用 px 或 rem 等单位&…...
![](https://www.ngui.cc/images/no-images.jpg)
极品飞车6里的赛道简介
极品飞车里有很多赛道,赛道分为前向赛道Forward、后向赛道Backward。前向赛道Forward是从A点到B点;后向赛道Backward是前向赛道的逆过程,即从B点到A点。这里介绍极品飞车6的赛道长度、中英文名称翻译、难度等级。 序号赛道英文名赛道中文名总长(km)急弯难度等级1Alpine Trai…...
![](https://www.ngui.cc/images/no-images.jpg)
SAP推出云端ERP解决方案,加速零售行业数字化转型
2025年1月9日,SAP发布了一款专为零售行业设计的云端ERP行业解决方案——S/4HANA Cloud Public Edition,进一步推动企业向云端迁移。这款解决方案旨在集中运营数据,整合财务、采购和商品管理流程,以帮助零售企业优化运营效率。 核…...
![](https://www.ngui.cc/images/no-images.jpg)
Python爬虫进阶——案例:模拟bilibili登录)
主要内容:模拟bilibili账号密码登录,不要实现的的实现功能是单击登录按钮,切换登录方式, 输入账号和密码,然后完成图片点击验证,最后单击立即登录按钮。 1、第一步:通过selenium模块访问bilibi…...
![](https://www.ngui.cc/images/no-images.jpg)
什么是数据分析?
什么是数据分析? 数据分析(Data Analysis)是指通过对数据进行收集、整理、处理、建模和解读,以揭示数据中的有用信息、支持决策和解决实际问题的过程。它是一门将数据转化为知识的学科,广泛应用于商业、科学研究、医疗…...
![](https://img-blog.csdnimg.cn/7b0968acfee54ae09afa975d06077980.png)
基于springboot的课程作业管理系统源码(springboot+vue+mysql)
风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的课程作业管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 可以管理首页、个人中心…...
![](/images/no-images.jpg)
wordpress调用文章内容标签/百度sem是什么
本文将分以下几个小节来学习: Java的JavaScript脚本引擎脚本开发中涉及到的类和接口简介开发步骤脚本与java数据传递脚本执行上下文作用域方法的调用编译脚本作用域 上例中"ScriptContext.GLOBAL_SCOPE"就是作用域。 ScriptContext的属性以及Bindings接口…...
![](https://img-blog.csdnimg.cn/20201214092914955.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgyMjE3MQ==,size_16,color_FFFFFF,t_70)
品牌手机网站开发公司哪家好/今日国际新闻热点
导语:Navicat Premium 连接MySQL时出现2059错误如下: 原因: mysql8之前的版本中加密规则是mysql_native_password, 而在mysql8之后,加密规则是caching_sha2_password 解决办法:更改加密规则 1.mysql -uroot -ppassword #登录 2.u…...
![](https://img-blog.csdnimg.cn/20210323174057438.gif#pic_center)
花生壳域名可以做网站域名吗/百度网首页
一、效果预览 用的图标都是网上到处拷贝的,仅仅做个示例使用。 截图 gif 二、思路 首先我们需要一个 FilePickerActivity 去显示页面。里面包含一个标题栏(ToolBar)、路径文本(TextView)和文件列表(Re…...
![](/images/no-images.jpg)
网站建设的原则有哪些/百度怎么发帖做推广
2017年1月15日科技部面试题(科技部2017年面试阶段分为三天。第一天上午体检,下午英语和专业课;第二天,素质拓展为主,首先用15分钟分组、起名、选队长等,然后开始素质拓展活动,每个活动之后,都会让考生们分享…...
![](/images/no-images.jpg)
网站栏目的分类/免费建站网站网页
1、模块的种类 用户自己写的自定义模块Python 标准库模块第三方模块(通过 pip install 安装的第三方库的模块) 2、模块的本质和作用 模块本质上是一个包含函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块…...
![](/images/no-images.jpg)
更改wordpress网站的url/seo优化专家
笔记07 5. ArrayList类 功能:创建长度可变的数组。 导包:同样在java.util中 ArrayList中的是泛型。泛型只能是引用类型,不能是基本类型注意事项 对于ArrayList集合来说,直接打印得到的不是地址值,而是内容。如果内容…...