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

郑州网站建设zhuotop有做阿里网站的吗

郑州网站建设zhuotop,有做阿里网站的吗,html5 网站平台,过年做啥网站能致富#x1f381;个人主页#xff1a;我们的五年 #x1f50d;系列专栏#xff1a;C课程学习 #x1f389;欢迎大家点赞#x1f44d;评论#x1f4dd;收藏⭐文章 目录 一.string的主体框架#xff1a; 二.string的分析#xff1a; #x1f354;构造函数和析构函数个人主页我们的五年 系列专栏C课程学习 欢迎大家点赞评论收藏⭐文章 目录 一.string的主体框架 二.string的分析 构造函数和析构函数 迭代器 赋值运算符重载 空间扩容 尾插 获取_str,_capacity,_size: []重载随机访问 在结尾追加字符串 在指定位置插入和删除字符串 交换 获取子串和寻找元素和字符串 运算符重载 流插入和流提取重载 通过对string的模拟实现可以对string有更深的理解和认识大概知道底层的逻辑以后出现什么问题可以更好的解决。对学习以后的容器也有很大的帮助。   一.string的主体框架 1.迭代器        2.运算符重载        3. #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #includeiostream #includecstring #includeassert.h #includealgorithmusing namespace std;namespace bit {class string {public://迭代器typedef char* iterator;typedef const char* const_iterator;iterator begin();const_iterator begin()const;iterator end();const_iterator end()const;//构造函数string(size_t capacity 4);string(const string s);string(const char* str);string operator(const string str);//析构函数~string();//异地扩容void reserve(size_t newcapacity);//尾插数据void push_back(char c);const char* c_str()const;size_t size()const;size_t capacity()const;char operator[](size_t pos);const char operator[](size_t pos)const;void append(const char* str);string operator(char ch);string operator(const char* str);void insert(size_t pos, char ch);void insert(size_t pos, const char* str);void erase(size_t pos 0, size_t len npos);void swap(string s);string substr(size_t pos 0, size_t len npos);size_t find(char ch, size_t pos 0);size_t find(const char* str, size_t pos 0);//运算符重载bool operator(const string s) const;bool operator(const string s) const;bool operator(const string s) const;bool operator(const string s) const;bool operator(const string s) const;bool operator!(const string s) const;//对sring进行清理void clear();private:const static size_t npos -1;char* _str;//有效大小size_t _size;//空间的容量size_t _capacity;};//重载流插入和流提取istream operator (istream is, string str);ostream operator (ostream os, const string str); } 二.string的分析 构造函数和析构函数 构造函数常用的是三个普通构造拷贝构造用const char*类型进行构造。 //capacity表示要提前开的空间大小string::string(size_t capacity):_str(new char[capacity 1]), _capacity(capacity), _size(0){_str[0] \0;}//拷贝构造string::string(const string s){_capacity s._capacity;_size s._size;_str new char[_capacity 1];strcpy(_str, s._str);}string::string(const char* str){size_t length strlen(str);_str new char[length 1];_capacity _size length;strcpy(_str, str);}string::~string(){delete[] _str;_str nullptr;_capacity _size 0;} 迭代器 //迭代器typedef char* iterator;typedef const char* const_iterator;iterator begin();const_iterator begin()const;iterator end();const_iterator end()const; 赋值运算符重载 string string::operator(const string str){if (str._capacity _capacity)reserve(str._capacity);strcpy(_str, str._str);return *this;} 空间扩容 void string::reserve(size_t newcapacity){//先判断是否需要扩容//如果newcapacity小于等于就不会扩也不会缩容if (newcapacity _capacity)return;char* p new char[newcapacity 1];_capacity newcapacity;strcpy(p, _str);delete[] _str;_str p;} 尾插 void string::push_back(char c){if (_size _capacity){//不能直接乘以两倍_capacity可能为0乘二还是为0size_t newcapacity _capacity 0 ? 4 : _capacity * 2;reserve(newcapacity);}_str[_size] c;_size;} 获取_str,_capacity,_size: const char* string:: c_str()const{return _str;}size_t string::size()const{return _size;}size_t string::capacity()const{return _capacity;} []重载随机访问 char string::operator[](size_t pos){assert(pos 0 pos _size);return _str[pos];}const char string::operator[](size_t pos)const{assert(pos 0 pos _size);return _str[pos];} 在结尾追加字符串 void string::append(const char* s){size_t length strlen(s);if(_size length _capacity)reserve(_size length);//strcat(_str, s);_size length;} 在指定位置插入和删除字符串 void string::insert(size_t pos, char ch){assert(pos 0 pos _size);if (_size _capacity)reserve(_capacity * 2);size_t end _size 1;while (end pos){_str[end] _str[end - 1];end--;}_size;_str[pos] ch;}void string::insert(size_t pos, const char* str){assert(pos 0 pos _size);size_t length strlen(str);if (length _size _capacity)reserve(length _size);for (size_t i _size - 1; i pos; i--)_str[i length] _str[i];_str[_size length] 0;for (size_t i 0; i length; i)_str[i pos] str[i];}void string::erase(size_t pos, size_t len){assert(pos 0 pos _size - 1);if (len_size-pos){_str[pos] \0;_size pos;}else{strcpy(_str pos, _str pos len);_size - len;}} 交换 void string::swap(string s){std::swap(s._capacity, _capacity);std::swap(s._size, _size);std::swap(s._str, _str);} 获取子串和寻找元素和字符串 string string::substr(size_t pos, size_t len){assert(pos 0 pos _size);if (len _size - pos){bit::string substr(_str pos);return substr;}else{bit::string substr(len);for (size_t i pos; i poslen; i)substr _str[i];return substr;}}size_t string::find(char ch, size_t pos){for (size_t i 0; i pos; i){if (_str[i] ch)return i;}return -1;}size_t string::find(const char* str, size_t pos){char* p strstr(_str pos, str);return p - _str;} 运算符重载 bool string::operator(const string s) const{return strcmp(_str, s._str)0;}bool string::operator(const string s) const{return !((*this) s);}bool string::operator(const string s) const{return ((*this) s || (*this) s);}bool string::operator(const string s) const{return ((*this) s || (*this) s);}bool string::operator(const string s) const{return strcmp(_str, s._str) 0;}bool string::operator!(const string s) const{return !((*this) s);}string string::operator(char ch){insert(_size, ch);return *this;}string string::operator(const char* str){insert(_size, str);return *this;} 流插入和流提取重载 istream operator(istream is, string s){s.clear();char it is.get();while (it ! it ! \n){s it;it is.get();}return is;}ostream operator(ostream os, const string s){for (size_t i 0; i s.size(); i)os s[i];return os;}
http://www.w-s-a.com/news/471147/

相关文章:

  • 深圳企业网站怎么做浪琴手表网站建设图
  • 2018网站外链怎么做济南 网站设计公司
  • 承德百度网站建设郑州网站seo优化公司
  • 四川建站模板网站公司分类信息网站制作
  • 网站开发前后端有wordpress模板安装教程视频教程
  • 有网站想修改里面的内容怎么做怎么做黑彩黑彩网站
  • 什么专业会做网站网站建设续费合同
  • 网站开发的项目开发网站做直播功能需要注册吗
  • 网站开发新手什么软件好网站设计师和ui设计师
  • 太仓苏州网站建设软件开发网站建设
  • 一个虚拟主机做2个网站吗工信部怎么查网站备案
  • 本地网站做淘宝客制作app步骤
  • 关于企业网站建设网页布局怎么设计
  • 惠州市网站设计公司裴东莞嘘网站汉建设
  • 长葛网站建站电子商务网站是什么
  • 泉做网站的公司太原网站建设开发公司
  • wordpress菜单栏的函数调用迅速上排名网站优化
  • 网站深圳广西模板厂哪家价格低
  • 搜索网站显示网页无法访问最好的网站推广
  • 巴彦淖尔市百家姓网站建设搬瓦工暗转wordpress
  • 温州鹿城区企业网站搭建云虚拟机
  • 网站的开发方法php网站商城源码
  • 旅游找什么网站好维护公司网站建设
  • 长春市长春网站制作站优化杭州企业推广网站
  • 网站建设开发设计营销公司山东网信办抓好网站建设
  • 斗图在线制作网站搜索关键词优化
  • 大连 网站建设 有限公司十大erp系统
  • 网站后台建设软件网络营销公司招聘
  • 做网站销售电销好做吗网站开发毕业设计代做
  • 成都学网站建设费用帝国cms与wordpress