沧州网站推广汕头百度快速优化排名

bicheng/2026/1/21 0:23:46/文章来源:
沧州网站推广,汕头百度快速优化排名,网站建设语言都有什么,网络营销方案内容上次讲了常用的接口#xff1a;C初阶#xff1a;初识STL、String类接口详细讲解#xff08;万字解析#xff09; 今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.构造函数#xff08;constructor)2.1构造函数2.1.1无参有参分开2.1.2利用缺省参数合起来 2.2拷贝构…上次讲了常用的接口C初阶初识STL、String类接口详细讲解万字解析 今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.构造函数constructor)2.1构造函数2.1.1无参有参分开2.1.2利用缺省参数合起来 2.2拷贝构造2.3模拟c_str()函数 3.析构函数destructor4.operator5.迭代器iterator6.1size()与capacity()6.2 reserve()函数 7. modify7.1push_back()、append()和operator7.2clear()和swap() 8.accessoperator[]9.npos10.find()函数11.insert()和erase()13.operator和operator 先看一下大概有哪些部分 1.基本结构与文件规划 string.h头文件包含类的全部(函数的声明与定义)test.cpp源文件进行调用test函数测试和完善功能 基本结构 namespace MyString {class string{public://各种函数private:int _size;//有效字符的数量int _capacity;//开的空间大小char* _str;//没有设计成模版就直接用char数组了}; }2.构造函数constructor) 2.1构造函数 2.1.1无参有参分开 string()//空参的{_size 0;_capacity 0;_str new char[1];_str[0] \0;}string(const char* str){_size strlen(str);_capacity _size;_str new char[_size 1];//加一是给 \0strcpy(_str, str);}2.1.2利用缺省参数合起来 string(const char* str)//不是 {_size strlen(str);_capacity _size;_str new char[_size 1];//加一是给 \0strcpy(_str, str);}2.2拷贝构造 string(const string s){_size s._size;_capacity s._capacity;_str new char[_capacity 1];strcpy(_str, s._str);}2.3模拟c_str()函数 目前还没有进行流插入和流提取的重构只能利用这个来输出string里的内容 const char* c_str()const {return _str; }利用test1函数来看是否正确 相同的命名空间会进行合并的 namespace MyString {void test1(){string s1;cout s1.c_str() endl;string s2(abc);cout s2.c_str() endl;string s3(s2);cout s3.c_str() endl;} }int main() {MyString::test1();return 0; }3.析构函数destructor ~string(){_size _capacity 0;delete[] _str;_str nullptr;} 4.operator string operator(const string s)//创建好新的空间复制跟赋值。再清理旧空间指向新的{char* tmp new char[s._capacity1];//创建好新空间strcpy(tmp, s._str);_size s._size;_capacity s._capacity;//复制跟赋值delete[] _str;_str tmp;//清理指向新的return *this;}5.迭代器iterator typedef char* iterator;typedef const char* const_iterator;iterator begin(){return _str;}iterator end(){return _str _size;}const_iterator begin()const{return _str;}const_iterator end()const{return _str _size;}#6.capacity 6.1size()与capacity() size_t size()const{return _size;}size_t capacity()const{return _capacity;}6.2 reserve()函数 void reserve(size_t n){if (n _capacity){_capacity n;char* tmp new char[_capacity 1];strcpy(tmp, _str);delete[]_str;_str tmp;//指向新的}}namespace MyString {void test2(){string s1;cout s1.size() endl;string s2(abc);cout s2.size() endl;string s3;s3 s2;cout s3.size() endl;cout s3.capacity() endl;} }int main() {MyString::test2();return 0; }7. modify 7.1push_back()、append()和operator void push_back(char c){if (_size _capacity){int newCapacity _capacity 0 ? 4 : 2 * _capacity;//有可能是空参构造reserve(newCapacity);}_str[_size] c;_str[_size] \0;}void append(const char* str){int len strlen(str);if (len _size _capacity){reserve(len _size);}strcpy(_str _size, str);_size len;}string operator(char c){push_back(c);return *this;}string operator(const char* str){append(str);return *this;}这里其实大家也能看到二者一个用于字符的添加一个用于字符串的添加。 其实就可以一个写成另外一个的重载 7.2clear()和swap() void clear(){_size 0;_str[0] \0;}void swap(string s){std::swap(*this, s);//使用库里的swap}对于swap我们可以去使用库里面的加上std就行了 namespace MyString {void test3(){string s1(abc);cout s1.c_str() endl;s1 a;cout s1.c_str() endl;s1 xxx;cout s1.c_str() endl;} }int main() {MyString::test3();return 0; }8.accessoperator[] char operator[](size_t index){return _str[index];}const char operator[](size_t index)const{return _str[index];}一个用于非常量一个用于常量 9.npos namespace MyString {class string{public://各种函数private:int _size;//有效字符的数量int _capacity;//开的空间大小char* _str;//没有设计成模版就直接用char数组了static size_t npos;};size_t string::npos -1; }10.find()函数 // 返回c在string中第一次出现的位置size_t find(char c, size_t pos 0) const//默认从0开始找{for (int i 0; i _size; i){if (_str[i] c){return i;}}return npos;}// 返回子串s在string中第一次出现的位置size_t find(const char* s, size_t pos 0) const{char* ret strstr(_str, s);//返回第一次出现的位置if (ret nullptr)//没找到{return npos;}return ret - _str ;}namespace MyString {void test4(){string s1(abc);cout s1.find(a) endl;cout s1.find(bc);} }int main() {MyString::test4();return 0; }11.insert()和erase() // 在pos位置上插入字符c/字符串str并返回该字符的位置string insert(size_t pos, char c){if (_size _capacity)//先看空间够不够{int newcapacity _capacity 0 ? 4 : 2 * _capacity;reserve(newcapacity);}//先向后移一格int end _size;// \0也往后while (end (int)pos)//pos一般为size_t类型此时end会整型提升有符号整数类型会被提升为无符号整数类型。{_str[end 1] _str[end];end--;}_str[pos] c;_size;return *this;}string insert(size_t pos, const char* str){int len strlen(str);if (_size len _capacity){reserve(_size len);}//先向后移len个格int end _size;// \0也往后while (end (int)pos){_str[end len] _str[end];end--;}strncpy(_str pos, str,len);_size len;return *this;}// 删除pos位置上的元素并返回该元素的下一个位置string erase(size_t pos, size_t len npos){if (len npos || len pos _size){_str[pos] \0;_size pos;}else{int start pos;while (_size - start - len1 0){_str[start] _str[start len];start;}}return *this;}测试 namespace MyString {void test5(){string s1(abc);cout s1.c_str() endl;int pos s1.find(bc);s1.insert(pos, xxx);cout s1.c_str() endl;s1.erase(pos,2);cout s1.c_str() endl;} }int main() {MyString::test5();return 0; } #12.substr()函数 string substr(size_t pos, size_t len npos){int end pos len;//end作为结束位置if (len npos || pos len _size){end _size;//当这两种情况结束位置就是最后\0了}//开始pos到end赋值到新的一个空间再返回string s;reserve(end - pos);for (int i pos; i end; i){s _str[i];}return s;}13.operator和operator ostream operator(ostream out, string s)//不需要放在类内不需要是友元{for (auto e : s){out e;}return out;}istream operator(istream in, string s){s.clear();char ch in.get();//使用cin拿不到空格和换行二者其实还是字符就用这个getwhile (ch ! ch ! \n){s ch;ch in.get();}return in;}测试 namespace MyString {void test6(){string s1;cin s1;cout s1 endl;int pos s1.find(b);string s2 s1.substr(pos, 2);cout s2 endl;} }int main() {MyString::test6();return 0; }好啦今天就到这里啦感谢大家支持

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

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

相关文章

ctf wordpressseo是啥

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 先决条件 本教程假设您已经在Debian 7或类似的Linux发行版(如Ubuntu)上设置了您的droplet(VPS&#…

不要钱做网站软件python网站建设

前言 本文接上一篇文章《斯坦福机器人Mobile ALOHA的关键技术:动作分块ACT的算法原理与代码剖析》而来,当然最开始本文是作为上一篇文章的第二、第三部分的 但因为ACT太过关键,除了在上一篇文章中写清楚其算法原理之外,还得再剖…

教育培训网站源码 模板 php培训机构网站源码培训学校网站源码个人网站开发制作教程

一、 Comparator 类 Comparator 类常作为 sorted() 方法的参数传递给 sorted 方法,用来解决给集合排序,自定义排序规则的问题 。 那从这个角度看,这个类肯定很常用了,一般都不喜欢自己写排序方法,而且自己写的肯定还…

asp做的网站数据库在哪里如何创建属于自己的网站

文章目录 一、充分了解AI技术的应用范围和优势二、创意策划,确定作品主题和风格三、素材收集,丰富作品内容四、特效制作,提升作品视觉效果五、配音处理,增强作品表现力六、作品发布,扩大作品传播范围《AI短视频制作一本…

wordpress付款插件保定网站优化招聘

文章目录 前言鸿蒙生态科普调研人员画像高校助力鸿蒙高校鸿蒙课程开设占比教研力量并非唯一原因 企业布局规划全盘接纳仍需一段时间企业对鸿蒙的一些诉求 机构入场红利机构鸿蒙课程开设占比机构对鸿蒙的一些诉求 鸿蒙实际体验高校用户群体高度认同与影响体验企业用户群体未来可…

网站公司网站建设深圳龙岗企业网站建设

背景 在实际的业务场景里,用会话文本构建模型(机器学习/深度学习)来做意图分类之类的任务时,经常会出现人工打标不够准确的问题,标签都不准确的话模型当然无法学习到有效信息了。这个问题真的非常头疼…除了与业务沟通…

芜湖网站备案咨询电话简洁大方网站模板

奶牛编号 jozj 2932 题目大意 求出有m个1的01串中字典序第n大的字典序 输入样例 7 3输出样例 10110数据范围 1⩽M⩽101 \leqslant M \leqslant 101⩽M⩽10 1⩽N⩽1071 \leqslant N \leqslant 10^71⩽N⩽107 解题思路 我们先从01串长度入手: 先对m1m 1m1的特…

重庆网站的建设现在哪个公司家庭网络好用

参考 stackflow相关讨论 原理 通过参考链接,可知探测Stack的最大深度是先在stack中填充不常用的特定值,然后实时检测这些值哪些发生了变化,变化的表示使用到了这个空间,如果程序完全遍历后,有些值还是没变&#xff…

网站开发与设计百度网址导航

周一,A股商场低开低走,沪指收盘失守2800点。截至收盘,上证综指跌2.68%,报2756.34点;深证成指跌3.5%,报8479.55点;创业板指跌2.83%,报1666.88点。沪深两市合计成交额7941亿元&#xf…

成都网站建设多少费用软件开发平台搭建

WPA-hashcat渗透 WPA-hashcat渗透1.hashcat介绍2.渗透姿势1.查看网卡2.开启监听模式3.扫描wifi4.抓包保存5.进行冲突模式攻击6.重新连接wifi7.生成hccap文件8.破解WPA-hashcat渗透 严重声明:cpu加速都是幌子,aricrack-ng也用cpu,不然用爱跑的? 1.hashcat介绍 Hashcat系列…

早晨网站建设wordpress 餐饮 主题

本文是关于聚类算法的第二篇K-means&#xff0c;感兴趣的同学可以前往http://ihoge.cn/2018/clustering.html 阅读完整版。 二、K-means 1. 算法步骤 <1> 选择KK个点作为初始质心 <2> Repeat: <3> 将每个点指派到最近的质心,形成K" role="pre…

百度seo公司整站优化软件用多说的网站

外边距折叠(collapsing margins) 毗邻的两个或多个margin会合并成一个margin&#xff0c;叫做外边距折叠。 规则如下: 两个或多个毗邻的普通流中的块元素垂直方向上的 margin会折叠浮动元素 / inline-block元素 / 绝对定位元素 / 行内元素的margin不会和垂直方向上的其他元素…

公司网站建设注意什么省内新闻最新消息

功能需求 在 SwiftUI 开发的 App 界面中,有时我们需要在全局层面向用户展示一些消息: 如上图所示:我们弹出的全局消息横幅位于所有视图之上,这意味这它不会被任何东西所遮挡;而且用户可以点击该横幅关闭它。这是怎么做到的呢? 在本篇博文中,您将学到以下内容 功能需求…

西双版纳网站建设开发公司网站建设网站优化相关资讯文章

参考&#xff1a;逆向-IDA工具的基本使用 地址&#xff1a;https://qingmu.blog.csdn.net/article/details/118862881 目录1、文件的打开与关闭2、窗口介绍&#xff1a;图形 文本 其他窗口2.1、图形界面&#xff1a;2.2、文本界面&#xff1a;2.3、反汇编窗口2.4、 十六进制窗口…

高端网站价格wordpress导航栏美化

目录: Spring Boot 整合 "Servlet三大组件" &#xff1a;1. 使用 "组件注册" 的方式 "整合Servlet三大组件" ( 实际操作为 : 创建自定义的"三大组件"对象 结合刚创建"的自定义组件对象"来 将 XxxRegistrationBean对象 通过…

桂林哪里做网站门户网站系统建设项目投标书

一、实验目的 1、加深对离散信号频谱分析的理解&#xff1b; 2、分析不同加窗长度对信号频谱的影响&#xff1b; 3、理解频率分辨率的概念&#xff0c;并分析其对频谱的 影响&#xff1b; 4、窗长和补零对DFT的影响 实验源码&#xff1a; 第一题&#xff1a; % 定义离散信…

商丘哪里做网站重庆行业网站建设

Vue.js 一个核心思想是数据驱动。所谓数据驱动&#xff0c;是指视图是由数据驱动生成的&#xff0c;我们对视图的修改&#xff0c;不会直接操作 DOM&#xff0c;而是通过修改数据。它相比我们传统的前端开发&#xff0c;如使用 jQuery 等前端库直接修改 DOM&#xff0c;大大简化…

兼职做网站系统免费做网站软件2003

文章目录 引言迭代器模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用迭代器示例代码地址 引言 想象一下&#xff0c;你在一个书店里浏览各种书籍。你可能会从头到尾查看每一本书&#xff0c;或者可能跳过一些不感兴趣的部分。在这个过程中&#xff0c;你实…

做网站的能赚多少钱互联网推广方式有哪些

应用需求变化多端的物联网&#xff0c;虽具备庞大的发展潜力及应用商机&#xff0c;但由于市场过于分散&#xff0c;几乎没有杀手应用可言&#xff0c;因此对有意耕耘相关市场的半导体业者而言&#xff0c;如何借力使力&#xff0c;寻找盟友共同搭建出的生态系统&#xff0c;遂…

佛山企业网站设计制作茂名专业网站建设

本文要点 1、词汇表Vocabulary &#xff08;普通名词&#xff09; 1) 三组词&#xff08;数据库支持的三个数字散列&#xff09;&#xff1a; 工作&#xff0c;工件&#xff0c;工具。论题&#xff0c;主题词&#xff0c;关键字。口号&#xff0c;符号&#xff0c;编号。 2…