当前位置: 首页 > news >正文

个人做游戏下载网站侵权吗兰州工程建设信息网站

个人做游戏下载网站侵权吗,兰州工程建设信息网站,网站整站开发视频教程,wordpress 3.9 sae文章目录 一. string底层逻辑演示声明和定义分开 二. size()三. operator[]四. 迭代器四. const迭代器五. 预留空间#xff08;reserve)六. 尾插一个字符push_back七. 尾插一个字符串append八. operator九. operator 一. string底层逻辑 #xff08;1#xff09;为了和库里面… 文章目录 一. string底层逻辑演示声明和定义分开 二. size()三. operator[]四. 迭代器四. const迭代器五. 预留空间reserve)六. 尾插一个字符push_back七. 尾插一个字符串append八. operator九. operator 一. string底层逻辑 1为了和库里面的string类区分开我们可以使用命名空间hou。之前学习的命名空间就有了价值。 2在类里面的都是内联函数 3对于比较短小的函数直接在类里面写就行。函数大一点将声明和定义分开。 成员变量 #includestdio.h #includestring #includeiostream namespace hou {class string{private:char* _str; //char类型数据数组的地址size_t _size; //有效元素个数size_t _capacity; //空间大小}; }成员函数 任何一个类都从构造函数开始无参/有参 无参的话将三个成员变量初始化为什么呢都初始化为空吗 这样是不可以的。 记得const char*比较特殊cout它不会打印出地址它自动识别类型会以为打印字符串字符串的打印规则是遇到‘\0’才会终止而我们的_str是空指针将空指针解引用肯定是错误的本质是空指针问题 --------------- 所以不能将char*初始化为空。里面起码要放一个\0 namespace hou {class string{public://任何一个类都从构造函数开始string()//先写一个无参的构造函数:_str(new char[1]{\0}),_size(0),_capacity(0){}~string(){delete[] _str;_str nullptr;_size 0;_capacity 0;}const char* c_str()const{return _str;}private:char* _str; //char类型数据数组的地址size_t _size; //有效元素个数size_t _capacity; //空间大小}; }刚刚写了无参的构造函数接下来写一个有参的构造函数 注意点 strlen计算长度时不包括\0strlen是在运行时计算的size是编译时计算的在初始化列表里写它的初始化顺序是按照声明的顺序来的 之前我们说过尽可能使用初始化列表但是strlen是在运行时计算的要计算3次效率低。这样子的话我们可以将strlen先计算出来之后用。但记住初始化列表的顺序是按照声明的顺序。 演示声明和定义分开 当我们想把声明写在.h里面定义写在.cpp里面的时候 这样写会报错所以我们需要在string.cpp里1写上类域2再写一下命名空间 一个命名空间是可以写多个的多个文件的同一个命名空间会被合并为(认为)一个命名空间的 已经声明和定义了还有一个需要注意的内容是缺省值只能在声明的时候给定义那里不可以写缺省值。但是char* _str的缺省值不可以是nullptr可以给一个\0或者直接“”字符串默认后面会加\0的 二. size() 对象.size()就是为了得到对象的大小即对象的有效元素个数 如果声明和定义分开写了同时这个函数有返回值那string::加到哪里呢 三. operator[] string.cpp里面的内容 char string::operator[](size_t i) {return _str[i]; }四. 迭代器 string的迭代器string的物理结构是数组 using iterator char*; //typedef char* iterator;迭代器还需要配合begin()和end()(begin()就是返回开始位置的迭代器 using iterator char*; iterator string::begin() {return _str; }iterator string::end() {return _str_size; }范围for的底层是迭代器支持迭代器则支持范围for 四. const迭代器 五. 预留空间reserve) 本质就是扩容但是这种提高了效率原本需要2倍2倍的扩但是当你知道需要多大的空间时就可以一次性扩容好。 reserve一般不缩容我们需要先判断一下想扩容的大小n是否比_capacity大开空间的时候永远要多开一个因为’\0‘是不计入_capacity的 void string:: reserve(size_t n){if (n _capacity){char* tmpnew char[n1];strcpy(tmp, _str);delete[]_str;_str tmp;_capacity n; //\0不计入空间大小}}六. 尾插一个字符push_back void string::push_back(char ch) {//先判断空间大小是否足够if (_size _capacity){//不够的话进入if语句进行扩容reserve(_capacity 0 ? 4 : 2 * _capacity);}_str[_size] ch;_size; }七. 尾插一个字符串append void string::append(const char* str){size_t len strlen(str);size_t newcapacity 2 * _capacity _size len ? _size len : 2 * _capacity;reserve(newcapacity);//开好空间之后插入字符串strcpy(_str_size, str);//直接复制(第一个参数是复制到哪里(位置),第二个是被复制的串_size len;}八. operator string string:: operator(char ch) {push_back(ch);return *this; } 九. operator string string:: operator(const char* str) {append(str);return *this; }
http://www.w-s-a.com/news/109289/

相关文章:

  • 微信公众号个人可以做网站么做企业网站需要哪些
  • 如何用付费音乐做视频网站wordpress如何设置首页
  • 杨凯做网站网站首页 排版
  • 网站图片标签江苏省建设类高工申报网站
  • 网站建设中的英文什么网站可以做医疗设备的
  • 柳州购物网站开发设计服装网站的建设与管理
  • 做网站的上海市哪家技术好北京百姓网免费发布信息
  • 网站文章排版制作网站软件
  • 云南网站开发公司网站商城定制网站建设
  • 企业网站的新闻资讯版块有哪些肇庆自助建站模板
  • 怎么做平台网站吗为网站做seo需要什么
  • 苏州吴江建设局招标网站海南网站搭建价格
  • 网站建设主要研究内容用哪个程序做网站收录好
  • 网站建设如何开单装修设计图免费
  • 做内容网站赚钱吗seo推广具体做什么
  • 连山区网站建设seo简历
  • 自助建站系统官方版太仓高端网站制作
  • 怎样只做自己的网站建设银行唐山分行网站
  • 咸阳鑫承网站建设软件开发公司网站模板
  • 百度怎么免费做网站网站建设大作业有代码
  • 小说素材网站设计素材网站特点
  • 如何建设一个好的网站WordPress主题设置数据库
  • 网站被模仿十堰网站制作公司
  • 怎么样做免费网站个人网站备案幕布
  • 做ppt的动图下载哪些网站制作一个网站需要多少时间
  • 公司网站开发制作备案中的网站
  • 怎么看网站的收录网站开发先前台和后台
  • 合肥市做网站多少钱wordpress网站布置视频
  • 中国建设人才网信息网站软件外包公司好不好
  • 网站建设与管理 市场分析上海网站建设公司排名