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

wordpress缺陷济南seo网站优化

wordpress缺陷,济南seo网站优化,深圳前500强企业名单,木质家居 技术支持 东莞网站建设1.string的成员变量 模拟实现string只需要三个成员变量#xff0c;capacity#xff0c;size#xff0c;_str#xff0c;也就是容量#xff0c;数据大小#xff0c;指向字符串的指针。 2.string的构造函数 2.1 使用字符串构造 使用字符串来构造一个string类的对象capacitysize_str也就是容量数据大小指向字符串的指针。 2.string的构造函数  2.1 使用字符串构造 使用字符串来构造一个string类的对象这个我建议不需要使用初始化列表因为很容易出错并且效率的提升不大。需要注意的是定义的顺序最好和初始化的顺序一致。_str的空间需要多开一个用以存放\0然后将str这个字符串拷贝到_str。 2.2 无参构造 无参构造必须开一个空间来存放\0而不是将_str置为nullptr不然在调用时可能会发生对空指针的解引用。 2.3通用构造  前面两个构造函数太冗余了直接合并成一个就可以了就是空字符空字符的末尾就是\0。 3.string的析构函数  析构函数很简单就是先delete先清理资源再释放空间再将容量和大小置为0. 4 c_strsizecapacity c_str返回值是const char*直接返回_str即可。 size和capacity就直接返回成员函数即可。 5. operator[] 这里的返回值是引用因为我们可能需要修改这个字符可以加一个assert判断pos是否合法。 6.普通迭代器和const迭代器 普通迭代器和const迭代器的区别就是const迭代器指向的内容不能被修改所以需要在成员函数后面加上const修饰*this. 7.reserver 可以开一个新的capacity为n空间然后将数据拷贝进去释放掉原来的_str然后将新的字符串赋值给_str将capacity置为n.需要注意的是开空间要比n多一个用来存放\0。 8.push_back  首先需要判断一下空间是否满了满了的话则需要扩容。然后在_size的位置插入字符ch即可再将_size,最后将字符串末尾置为\0。 9.append 首先计算一下当前的_sizelen是否大于容量如果大于则需要扩容直接使用reserve扩容即可。然后在_str_size这个位置开始拷贝str最后将_size更新即可。 10.operator  直接复用push_back和append即可。 11.insert 在pos位置插入一个字符可以先判断一下pos是否合理再判断容量是否足够然后开始挪动字符需要注意的是pos是size_t类型与int类型的end比较的话while循环会出现死循环所以需要强转一下循环结束时就可以在pos位置插入字符了再将_size。 插入字符串的话也差不多但是需要使用strncpy控制一下长度因为strcpy会把\0也拷贝进去这样的话就覆盖掉一个字符了。 12.erase  erase就是从pos位置开始删除len个字符len这里我们可以给一个缺省值npos。接下来判断如果没有给len则从pos位置开始将后面的字符串全部删除如果poslen_size也就是要删除的部分超过了_size这两种情况都可以在pos位置置为\0因为字符串以\0结尾就相当于删除了后面的字符再将_size置为pos。 13.swap  这里可以使用库里面的函数模板来实现。 14.find 查找字符的话就是直接暴力即可如果没找到则返回npos。 查找字符串可以使用strstr这个函数返回的是指针如果返回的是空指针则说明没有找到否则可以使用返回的指针减去指向原字符串的指针。 15.substr substr也是要首先考虑len的长度然后我们创建一个string的对象str先开end-pos个空间然后使用运算符重载进行插入最后返回str。还需要注意的是返回值是进行了浅拷贝创建了临时变量实际上str已经销毁了返回的是str的临时对象而string内部有资源浅拷贝的话有可能会发生问题所以需要写一个拷贝构造来完成深拷贝。 16.拷贝构造(深拷贝 17.operator \ 18.clear clear是为了清理数据不会释放空间。 源码 #pragma once #includeiostream #includeassert.h using namespace std;static size_t npos -1; namespace zxf {class string{public: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;}//string()//{// _capacity 0;// _size 0;// _str new char[1];// _str[0] \0;//}string(const char* str){_capacity strlen(str);_size _capacity;_str new char[_capacity1];strcpy(_str, str); }//s2(s1)传统写法//string(const string s)//{// _str new char[s._capacity 1];// strcpy(_str, s._str);// _size s._size;// _capacity s._capacity;//}//现代写法string(const string s){string tmp(s._str);swap(tmp);}~string(){delete[] _str;_str nullptr;_capacity 0;_size 0;}const char* c_str() const{return _str;}size_t size() const{return _size;}size_t capacity() const{return _capacity;}void reserve(size_t n){char* tmp new char[n 1];strcpy(tmp, _str);delete[]_str;_str tmp;_capacity n;}void push_back(char ch){if (_size _capacity){size_t newcapacity _capacity 0 ? 4 : _capacity * 2;reserve(newcapacity);}_str[_size] ch;_size;_str[_size] \0;}void append(const char* str){size_t len strlen(str);if (_size len _capacity){reserve(_size len);}strcpy(_str _size, str);_size len;}void insert(size_t pos,char ch){assert(pos 0 pos _size);if (_size _capacity){size_t newcapacity _capacity 0 ? 4 : _capacity * 2;reserve(newcapacity);}int end _size;while (end (int)pos){_str[end1] _str[end];end--;}_str[pos] ch;_size;}void insert(size_t pos, const char* str){assert(pos _size);size_t len strlen(str);if (_size len _capacity){reserve(_size len);}int end _size;while (end (int)pos){_str[end len] _str[end];end--;}strncpy(_str pos, str,len);_size len; }void erase(size_t pos, size_t len npos){assert(pos _size);if (len npos || pos len _size){_str[pos] \0;_size pos;}else{strcpy(_str pos, _str pos len);_size - len;}}void swap(string s){std::swap(_str, s._str);std::swap(_size, s._size);std::swap(_capacity, s._capacity);}size_t find(char ch,size_t pos 0){for (size_t i pos; i _size; i){if (_str[i] ch)return i;}return npos;}size_t find(const char* str,size_t pos 0){const char* ptr strstr(_str, str);if (ptr nullptr){return npos;}else{return ptr - _str;}}void clear(){_str[0] \0;_size 0;}string substr(size_t pos 0,size_t len npos){assert(pos _size);size_t end pos len;if (len npos || pos len _size){end _size;}string str;str.reserve(end - pos);for (size_t i pos; i end; i){str _str[i];}return str;}string operator(char ch){push_back(ch);return *this;}string operator(const char* str){append(str);return *this;}//string operator(const string s)//{// if (this ! s)// {// char* tmp new char[s._capacity 1];// strcpy(tmp, s._str);// delete[] _str;// _str tmp;// _size s._size;// _capacity s._capacity;// }// return *this;//}string operator(string s){swap(s);return *this;}const char operator[](size_t pos) const{assert(pos _size);return _str[pos];}char operator[](size_t pos) {assert(pos _size);return _str[pos];}private:size_t _capacity;size_t _size;char* _str;};ostream operator(ostream out, const string s){for (size_t i 0; i s.size(); i){out s[i];}return out;}istream operator(istream in,string s){char ch;in ch;while (ch ! ch ! \n){s ch;in ch;}return in;}void Print_string(const string s){for (int i 0; i s.size(); i){cout s[i];}cout endl;}void test_string1(){string s1(hello world);couts1.c_str() endl;string::iterator it s1.begin();while (it ! s1.end()){cout *it;it;}cout endl;string::const_iterator cit s1.begin();while (cit ! s1.end()){cout *cit;cit;}cout endl;}void test_string2(){string s1(hello world);s1 ;s1 zxf;string::iterator it s1.begin();while (it ! s1.end()){cout *it;it;}cout endl;}void test_string3(){string s1(hello world);string s2 s1;cout s2.c_str() endl;string s3 s1.substr(2, 4);cout s3.c_str() endl;cout s3 endl;} }今天的分享到这里就结束了感谢大家的阅读
http://www.pierceye.com/news/946903/

相关文章:

  • 山东东营建设网官方网站专做h5的公司网站
  • 电商网站建设题库做海岛旅游类网站的背景及意义
  • 网站开发后台框架wordpress 文章同步微信
  • 小型网站有哪些怎么搭建自己的网站
  • 注册网站域名的入口网站开发公司的
  • vs2012 建网站光明区公明街道
  • 公司网站建设属于什么职位杭州专业seo公司
  • 网站SEO容易做吗网络链接推广
  • 建立免费公司网站自适应型网站建设费用
  • 郑州大学现代远程教育《网页设计与网站建设》课程考核要求云南网站建设企业
  • 电商网站的支付功能广州建设诚信评分网站
  • 网站在哪里建立刷推广
  • 网站上的公告怎么做参考文献太原工程建设招投标信息网站
  • 网站建设找云尚网络asp网站文件
  • 广州的企业网站建设网站推广途径和推广要点
  • 如何保存个人网站东营网红餐厅
  • 网站自助建站湖南企业网站建设
  • 网站设计开发网站企业网站推广方案范文
  • 金峰辉网站建设手机系统下载
  • 网站品牌推广公司天津企业网站建设开发维护
  • zencart 网站入侵网络推广讲师培训
  • 如何做建议的网站wordpress自动发布网站
  • 广州seo网站推广公司个人站长怎么做企业网站
  • 免费看电视剧的网站2021传媒公司名字大全免费
  • 宝塔面板怎么搭建网站wordpress怎么自己写代码
  • 张家界网站建设培训机构管理系统哪个好
  • 网站开发语言开发网站建设和网站开发
  • 上海哪家做网站关键词排名西安到北京高铁几小时
  • 网站后台怎么添加图片大连精美网站制作
  • 电子商务网站建设规划说明书长沙百度快速排名