c++9月23日

news/2024/9/28 23:36:51/

1.My_string

头文件

#ifndef MY_STRINGHEAD_H
#define MY_STRINGHEAD_H#include <iostream>
#include <cstring>
using namespace std;class My_string
{
private:char *ptr;//指向字符数组的指针int size;//字符数组的最大容量int len ;//当前字符串的长度
public:My_string(){this->size=15;this->len=0;this->ptr[len]='\0';}My_string(const char *src);//有参构造My_string(const My_string & other);//拷贝构造My_string & operator=(const My_string &other);~My_string();//析构函数bool My_empty();//判空void push_back(char value);//尾插void pop_back();//尾删char * data ();char &at(int index);int get_len();int get_size();void Double_String();//双倍扩容void show();
};#endif // MY_STRINGHEAD_H

功能函数

#include "my_stringhead.h"My_string::My_string(const char *src)//有参构造{this->size = strlen(src);this->len=this->size;this->ptr = new char[this->size+1];strcpy(ptr,src);}My_string::My_string(const My_string & other):size(other.size),len(other.len)//拷贝构造{this->ptr = new char[this->size+1];strcpy(this->ptr,other.ptr);}My_string & My_string::operator=(const My_string &other)//拷贝赋值{if(this!=&other){this->size = other.size;this->len = other.len;strcpy(this->ptr,other.ptr);}return *this;}My_string::~My_string()//析构函数{delete this->ptr;}bool My_string:: My_empty()//判空{return len==0;}void My_string:: push_back(char value)//尾插{this->size++;char *Newptr=new char[this->size];strcpy(Newptr,ptr);delete this->ptr;this->ptr=Newptr;this->ptr[this->len]=value;this->len++;this->ptr[this->len]='\0';}void My_string::pop_back()//尾删{this->size--;this->len--;this->ptr[this->len]='\0';}char & My_string::at(int index){if(index>=0&&index<this->len){return this->ptr[index];}else{cout<<"输入不合法"<<endl;exit(-1);}}char *My_string::data ()//转换为c风格字符串{return this->ptr;}int  My_string::get_len(){return this->len;}int My_string:: get_size(){return this->len;}void My_string::Double_String()//双倍扩容{if(this->len+1>=this->size){this->size*=2;char *Newptr=new char[this->size];strcpy(Newptr,ptr);delete this->ptr;this->ptr=Newptr;}}void My_string:: show(){cout<<this->ptr<<endl;}

主函数

#include "my_stringhead.h"int main()
{My_string str("hello world");str.show();My_string str1;str1.operator = (str);str1.show();return 0;
}

2.思维导图


http://www.ppmy.cn/news/1531661.html

相关文章

R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析

随机森林作为一种集成学习方法&#xff0c;在处理复杂数据分析任务中特别是遥感数据分析中表现出色。通过构建大量的决策树并引入随机性&#xff0c;随机森林在降低模型方差和过拟合风险方面具有显著优势。在训练过程中&#xff0c;使用Bootstrap抽样生成不同的训练集&#xff…

主从数据库同步配置详解(MySQL/MariaDB)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、环境准备与安装配置本地部署MySQLUbuntu 系统&#xff1a;CentOS 系统&#xff1a; MariaDBUbuntu 系统&#xff1a;CentOS 系统&#xff1a; 容器部署MySQ…

进阶SpringBoot之分布式系统与 RPC 原理

分布式系统是若干独立计算机的集合&#xff0c;这些计算机对于用户来说就像单个相关系统 分布式系统是由一组通过网络进行通信&#xff0c;为了完成共同的任务而协调工作的计算机节点组成的系统 其目的是利用更多的机器&#xff0c;处理更多的数据 RPC&#xff08;Remote Pr…

Chainlit集成LlamaIndex实现知识库高级检索(路由检索器)

检索原理 llamaindex 是一个用于构建和部署基于文档的问答系统的框架。其中&#xff0c;RouterRetriever 是一个特定的检索器组件&#xff0c;它设计用于根据输入查询选择最佳的检索策略。RouterRetriever 的主要功能是在多个不同的检索器之间进行路由&#xff0c;根据输入的特…

vue+UEditor附件上传问题

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

scrapy快速上手

安装 除了scrapy本身还要安装两个库 pip install scrapy pip install pywin32 pip install wheel 创建项目 在要创建项目的地方打开powershell scrapy startproject 项目名 我们得到这样的项目结构&#xff0c;功能如下 scrapy.cfg 项目的主配置信息 …

nvm以及npm源配置

配置 NVM 和 NPM 使用镜像源 接上一篇。国内使用会遇到网络连接问题。为了解决这个问题&#xff0c;我们可以配置 NVM 和 NPM 使用腾讯的源。 配置 NVM 源 首先&#xff0c;我们需要配置 NVM 源。可以使用以下命令&#xff1a; export NVM_NODEJS_ORG_MIRRORhttps://mirrors.…

基于STM32的智能家居交互终端:使用FreeRTOS与MQTT协议的流程设计

一、项目概述 简要介绍项目的目标和用途 随着智能家居的普及&#xff0c;家庭智能交互终端成为提升居住体验的重要设备。本文将介绍一个基于STM32的家庭智能交互终端的设计与实现&#xff0c;该终端能够通过触摸屏、语音识别和传感器数据采集等功能&#xff0c;提供家庭环境监…