01.思维导图

02.

方法一:

#include <iostream>
#include <cstring>
#include <iostream>
using namespace std;
class mystring
{
private:char* buf;int len;public:mystring(const char* str);void copy(const char* ptr);void copy(mystring ptr);void append(const char* ptr);void append(mystring ptr);void compare(const char* ptr);void show(){cout << buf << endl;}
};
mystring::mystring(const char* str):len(strlen(str))
{buf=(char*)malloc(len+1);strcpy(buf,str);
}//复制字符串
void mystring::copy(const char* ptr)
{int i=0;len=strlen(ptr);while(ptr[i]!='\0'){buf[i]=ptr[i];i++;}buf[i]='\0';
}void mystring::copy(mystring ptr)
{int i=0;len=ptr.len;while(ptr.buf[i]!='\0'){buf[i]=ptr.buf[i];i++;}buf[i]='\0';
}
//追加字符串
void mystring::append(const char* ptr)
{int i=0,j=0;while(buf[i]!='\0'){i++;};for(;ptr[j]!='\0';j++,i++){buf[i]=ptr[j];}buf[i]='\0'; len=i;
}void mystring::append(mystring ptr)
{int i=len,j=0;while(ptr.buf[j]!='\0'){buf[i]=ptr.buf[j];i++;j++;
}
buf[i]='\0';
len=i;}
//主函数
int main()
{mystring str = "hello";str.show();mystring ptr = "world";str.copy(ptr);str.show();str.copy("你好");str.show();str.append(ptr);str.show();str.append("你好");str.show();
}

方法二:

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std;
class mystring{
private://指向一个堆空间,该堆空间用来保存外部传入的字符串char* buf;int len;//记录buf里面保存的字符串有多少
public:mystring(const char* s){len=strlen(s);buf=(char*)malloc(len+1);strcpy(buf,s);}void copy(mystring s){len=s.len;char* str=s.buf;strcpy(buf,str);}void copy(const char* s){len=strlen(s);strcpy(buf,s);}void append(mystring s){len+=s.len;char* str=s.buf;strcat(buf,str);}void append(const char* s){int l=strlen(s);len+=l;strcat(buf,s);}int compare(mystring s){char* str=s.buf;return strcmp(buf,str);}int compare(const char* s){return strcmp(buf,s);}void show(){cout<<buf<<endl;}char at(int n){return buf[n];}};int main(int argc,const char** argv)
{mystring str="hello";//这段代码要求一定为mystring类写一个可隐式调用的单参构造函数mystring ptr="world";//在写单参构造函数的时候,私有成员len使用列表初始化的形式初始化str.copy(ptr);//str.copy("nihao");str.show();str.append(ptr);str.append("你好");str.show();str.compare(ptr);str.compare("您好");str.show();//最后再写一个show函数,用来在终端输出str里面保存的字符串cout<<str.at(2)<<endl;}
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>                        
#include <vector>
#include <memory>using namespace std;
class mystring{
private:char* buf;int len;
public:mystring(){}mystring(const char* r);void copy(mystring r);//此功能其实就是buf的set接口,即setBufbool compare(mystring r);void append(mystring r);char at(int index);void show();
};mystring::mystring(const char* r):len(strlen(r)),buf((char*)calloc(1,len+1))
{//len=strlen(r);//buf=(char*)calloc(1,len+1);strncpy(buf,r,len);
}void mystring::copy(mystring r)
{//如果len>=r.len直接用//如果len<r.len,根据r.len申请新空间,释放原先空间if(len<r.len){len=r.len;free(buf);buf=(char*)calloc(1,len+1);}strncpy(buf,r.buf,len);
}bool mystring::compare(mystring r)
{/*if(strcmp(buf,r.buf)==0){return true;}else{return false;}*/return strcmp(buf,r.buf)==0;
}void mystring::append(mystring r)
{len=len+r.len;char* temp=buf;buf=(char*)calloc(1,len+1);strcpy(buf,temp);strcat(buf,r.buf);
}char mystring::at(int index)
{return buf[index];
}void mystring::show()
{cout<<buf<<endl;
}int main(int argc, const char** argv)
{mystring str="hello";mystring ptr="world";str.show();ptr.show();str.copy(ptr);str.show();str.copy("niho");str.show();cout<<(str.compare(ptr))<<endl;cout<<(str.compare("world"))<<endl;str.append(ptr);str.show();str.append("world");str.show();cout<<str.at(0)<<endl;return 0;                             
}

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

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

相关文章

lammps滚动模拟

大家好,我是小马老师。 本文介绍lammps中模型滚动的设置方法。 模型的滚动需要解决2个问题: (1)设置滚动旋转轴位置和方向,也就是确定沿哪个方向滚动。 (2)原地滚动还是在滚动过程中整体也要移动。 为保证滚动的平稳,旋转轴一般通过模型的质心,需要先计算模型的质…

增强LLM最后隐藏层的意义与效果

LLM 置信度增强:是否可以增强最后的隐藏层(非logits层) 表征工程是提取隐藏层状态表征,LLM的置信度增强是优化的logist数值 要回答“是否可以增强最后的隐藏层(非logits层)以及是否有意义”,需要结合大语言模型的结构特性、你当前的任务(情感分析)以及“隐藏层增强”…

根据数据判断神经网络所需最小参数量

更新中方法目标&#xff1a;找到能充分学习数据规律&#xff0c;但不过度拟合噪声的最小参数量。增量策略&#xff1a;优先增加深度&#xff08;层数&#xff09;&#xff1a;添加1个隐藏层&#xff08;如16神经元&#xff09;→ 训练验证再增加宽度&#xff08;神经元&#xf…

基于APEX系统自动曝光数学原理

目录 一、APEX系统 二、自动曝光概述 三、曝光估计及校正算法的实现 一、APEX系统 在美国国家标准中,将(4.22)式所表示的基本参数方程进行了变换,将他表示为以2 为底的指数形式,这样就可以用加法的形式来表达曝光参数方程式,称为加法系统,即 APEX(Additive System of Ph…

JAVA后端面试笔记

1.JAVA中和equals的区别 区别&#xff1a;一个是运算符&#xff0c;一个是方法 比较变量的值是否相同 ①如果比较的对象是基本数据类型&#xff0c;则比较数值是否相等 ②如果比较的是引用数据类型&#xff0c;则比较的是对象的内存地址是否相等 equals方法比较对象的内容是否…

在 Ubuntu 上将 Docker 降级到版本 25.0.5 (二) 降低版本,涉及兼容性问题

以下有免费的4090云主机提供ubuntu22.04系统的其他入门实践操作 地址&#xff1a;星宇科技 | GPU服务器 高性能云主机 云服务器-登录 相关兑换码星宇社区---4090算力卡免费体验、共享开发社区-CSDN博客 兑换码要是过期了&#xff0c;可以私信我获取最新兑换码&#xff01;&a…

什么是MySQL 视图

文章目录什么是MySQL 视图定义为什么使用视图创建/替换视图更新视图总结什么是MySQL 视图 定义 视图是一种虚拟表&#xff0c;是一个逻辑表&#xff0c;本身并不包含数据&#xff0c;通过select语句去基本表上动态生成数据。 举个例子&#xff1a; 你有一个员工表employees…

Neo4j 5.x版本的导出与导入数据库

neo4j的版本管理真的是灾难级别的&#xff0c;文档也乱&#xff0c;特定版本也难下&#xff0c;不同版本之间的命令存在很大差异&#xff0c;网上的很多资料都是Neo4j 4.x的&#xff0c;在此给出我自己试出来的5.x的导入导出方法使用前先关闭neo4j服务进入到neo4j安装目录的bin…

Java——深入解析 CGlib 与 JDK 动态代理:原理、区别与实践

在 Java 开发中&#xff0c;动态代理是实现 AOP&#xff08;面向切面编程&#xff09;的核心技术&#xff0c;广泛应用于日志记录、事务管理、权限控制等场景。其中&#xff0c;JDK 动态代理和 CGlib 是两种最常用的动态代理实现方式。本文将从原理、区别、使用场景等方面深入解…

变频器带动电机:全方位解析参数变化

在现代工业自动化领域&#xff0c;变频器作为电机调速的核心设备&#xff0c;扮演着至关重要的角色。它能够精准地控制电机的运行状态&#xff0c;通过改变电源频率和电压&#xff0c;实现电机转速、转矩、功率等参数的灵活调整。本文将深入探讨变频器带动电机时&#xff0c;各…

OpenCV 入门知识:图片展示、摄像头捕获、控制鼠标及其 Trackbar(滑动条)生成!

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…

Elasticsearch是什么?

Elasticsearch&#xff08;简称ES&#xff09;是一种基于Lucene的分布式搜索引擎&#xff0c;广泛应用于大数据、日志分析、全文搜索等场景。它的核心是提供高效、可扩展的搜索和分析能力。ES 提供了强大的全文搜索、聚合分析、数据可视化等功能&#xff0c;可以用来快速地对海…

(Arxiv-2025)OmniGen2:通向先进多模态生成的探索

OmniGen2&#xff1a;通向先进多模态生成的探索 paper title&#xff1a;OmniGen2: Exploration to Advanced Multimodal Generation paper是BAAI发布在Arxiv 2025的工作 Code:链接 Abstract 在本研究中&#xff0c;我们提出了 OmniGen2&#xff0c;这是一种多功能、开源的生成…

期权到期会对大盘有什么影响?

本文主要介绍期权到期会对大盘有什么影响&#xff1f;期权到期对大盘的影响主要体现在以下几个方面&#xff0c;但整体影响通常有限且短期&#xff0c;具体效果需结合市场环境、期权规模及行权价位置综合判断。期权到期会对大盘有什么影响&#xff1f;1. 市场流动性波动到期日效…

【LeetCode刷题指南】--随机链表的复制

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

系统学习算法:专题十四 链表

前提知识&#xff1a;1.画图&#xff0c;数据结构相关的题&#xff0c;画图必不可少&#xff0c;只要能画出来&#xff0c;那么后面的代码就很容易能写出来&#xff0c;因为将抽象的数据结构转换为直观的图画2.引入虚拟头结点&#xff0c;也叫哨兵位&#xff0c;能够避免考虑很…

零基础学后端-PHP语言(第一期-PHP环境配置)

从本期开始&#xff0c;我们学习PHP&#xff0c;但是我们要先配置PHP环境 PHP官网链接&#xff1a;PHP For Windows: Binaries and sources Releases 我们可以看到有以下资源 可以看到有很多php的版本&#xff0c;有Non Thread Safe和Thread Safe&#xff0c;还有zip&#xf…

C++ primer知识点总结

《C Primer》系统学习指南&#xff1a;从C到C的平滑过渡根据你提供的《C Primer》目录和你的需求&#xff08;C语言背景转C&#xff0c;侧重网络编程&#xff09;&#xff0c;我将为你制定一个全面的学习计划&#xff0c;包含知识点详解、C/C对比、实战案例和分阶段项目练习。第…

异构融合 4A:重构高性能计算与复杂场景分析的安全与效率边界

当全球数据量以每两年翻一番的速度爆炸式增长&#xff0c;高性能计算&#xff08;HPC&#xff09;与复杂场景分析正成为破解气候预测、基因测序、金融风控等世界级难题的关键引擎。但异构计算环境的碎片化、多系统协同的复杂性、数据流动的安全风险&#xff0c;正在形成制约行业…

【华为机试】240. 搜索二维矩阵 II

文章目录240. 搜索二维矩阵 II描述示例 1示例 2提示解题思路核心分析问题转化算法实现方法1&#xff1a;右上角开始搜索&#xff08;推荐&#xff09;方法2&#xff1a;逐行二分查找方法3&#xff1a;分治法方法4&#xff1a;左下角开始搜索复杂度分析核心要点数学证明右上角搜…