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

潮州网站推广教程科技自立自强是国家强盛之基

潮州网站推广教程,科技自立自强是国家强盛之基,世纪明珠网站建设,包装设计的网站目录 深拷贝与浅拷贝 浅拷贝#xff1a; 深拷贝 写时拷贝(了解) 模拟实现 准备 完整代码 深拷贝与浅拷贝 浅拷贝#xff1a; 也称位拷贝#xff0c;编译器只是将对象中的值拷贝过来。如果对象中管理资源#xff0c;最后就会导致多个对象共享同一份资源#xff0c;当一… 目录 深拷贝与浅拷贝 浅拷贝 深拷贝 写时拷贝(了解) 模拟实现 准备 完整代码  深拷贝与浅拷贝 浅拷贝 也称位拷贝编译器只是将对象中的值拷贝过来。如果对象中管理资源最后就会导致多个对象共享同一份资源当一个对象销毁时就会将该资源释放掉而此时另一些对象不知道该资源已经被释放以为还有效所以当继续对资源进项操作时就会发生发生了访问违规。 就像一个家庭中有两个孩子但父母只买了一份玩具两个孩子愿意一块玩则万事大吉万一不想分享就你争我夺玩具损坏。 可以采用深拷贝解决浅拷贝问题即 每个对象都有一份独立的资源不要和其他对象共享 。父母给每个孩子都买一份玩具各自玩各自的就不会有问题了 深拷贝 如果一个类中涉及到资源的管理其拷贝构造函数、赋值运算符重载以及析构函数必须要显式给出。一般情况都是按照深拷贝方式提供。 下图来源于网图   写时拷贝(了解) 写时拷贝就是一种拖延症是在浅拷贝的基础之上增加了引用计数的方式来实现的。 引用计数用来记录资源使用者的个数。在构造时将资源的计数给成 1 每增加一个对象使用该资源就给计数增加1 当某个对象被销毁时先给该计数减 1 然后再检查是否需要释放资源如果计数为 1 说明该对象时资源的最后一个使用者将该资源释放否则就不能释放因为还有其他对象在使用该资源。 模拟实现 准备 namespace frog {   class string   {   public:     typedef char* iterator;   public:     string(const char* str )     string(const string s)     string operator(const string s)     ~string()     //     // iterator     iterator begin()     iterator end()     /     // modify     void push_back(char c);     string operator(char c);     void append(const char* str);     string operator(const char* str);     void clear();     void swap(string s);     const char* c_str()const;     /     // capacity     size_t size()const     size_t capacity()const     bool empty()const     void resize(size_t n, char c \0);     void reserve(size_t n);     /     // access     char operator[](size_t index);     const char operator[](size_t index)const;     /     //relational operators     bool operator(const string s);     bool operator(const string s);     bool operator(const string s);     bool operator(const string s);     bool operator(const string s);     bool operator!(const string s);     // 返回c在string中第一次出现的位置     size_t find (char c, size_t pos 0) const;     // 返回子串s在string中第一次出现的位置     size_t find (const char* s, size_t pos 0) const;     // 在pos位置上插入字符c/字符串str并返回该字符的位置     string insert(size_t pos, char c);     string insert(size_t pos, const char* str);           // 删除pos位置上的元素并返回该元素的下一个位置     string erase(size_t pos, size_t len);   private:     char* _str;     size_t _capacity;     size_t _size;   } } 完整代码  #pragma once #includeiostream #includestring #includeassert.h namespace bit{class string{public:typedef char* iterator;typedef char* iterator;typedef const char* const_iterator;public:string(const char* str ):_size(strlen(str)), _capacity(_size){_str new char[_capacity 1];strcpy(_str, str);}string(const string s){_str new char[s._capacity1];strcpy(_str, s._str);_size s._size;_capacity s._capacity;}iterator begin(){return _str;}iterator end(){return _str _size;}const_iterator begin() const{return _str;}const_iterator end() const{return _str _size;}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;}}~string(){delete[] _str;_str nullptr;_size _capacity 0;}void swap(string s){std::swap(_str, s._str);std::swap(_size, s._size);std::swap(_capacity, s._capacity);}string operator(string tmp){swap(tmp);return *this;}char operator[](size_t pos){assert(pos _size);return _str[pos];}const char operator[](size_t pos) const{assert(pos _size);return _str[pos];}size_t capacity() const{return _capacity;}size_t size() const{return _size;}const char* c_str() const{return _str;}void reserve(size_t n){if (n _capacity){char* tmp new char[n 1];strcpy(tmp, _str);delete[] _str;_str tmp;_capacity n;}}void resize(size_t n, char ch \0){if (n _size){_str[n] \0;_size n;}else{reserve(n);while (_size n){_str[_size] ch;_size;}_str[_size] \0;}}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* sub, size_t pos 0){const char* p strstr(_str pos, sub);if (p){return p - _str;}else{return npos;}}string substr(size_t pos, size_t len npos){string s;size_t end pos len;if (len npos || pos len _size) {len _size - pos;end _size;}s.reserve(len);for (size_t i pos; i end; i){s _str[i];}return s;}void push_back(char ch){if (_size _capacity){reserve(_capacity 0 ? 4 : _capacity * 2);}_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;}string operator(char ch){push_back(ch);return *this;}string operator(const char* str){append(str);return *this;}void insert(size_t pos, char ch){assert(pos _size);if (_size _capacity){reserve(_capacity 0 ? 4 : _capacity * 2);}// 17:17size_t end _size 1;while (end pos){_str[end] _str[end - 1];--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{size_t begin pos len;while (begin _size){_str[begin - len] _str[begin];begin;}_size - len;}}bool operator(const string s) const{return strcmp(_str, s._str) 0;}bool operator(const string s) const{return strcmp(_str, s._str) 0;}bool operator(const string s) const{return *this s || *this s;}bool operator(const string s) const{return !(*this s);}bool operator(const string s) const{return !(*this s);}bool operator!(const string s) const{return !(*this s);}void clear(){_str[0] \0;_size 0;}private:char* _str;size_t _size;size_t _capacity;public:const static size_t npos;};const size_t string::npos -1;}
http://www.hkea.cn/news/14373836/

相关文章:

  • 石家庄网站建设招商滨州改版网站建设服务
  • 廊坊市网站建设wordpress微信登录页面
  • 俱乐部网站 模板公司企业网络宣传设计方案
  • 网站查询平台官网中国科技公司100强
  • 网站备案 ip临海建设银行网站
  • 绿色 网站 源码城乡建设局
  • 大概开发一个网站多少钱动画设计学校
  • 古镇建设网站毕设做网站什么能过
  • 网站建设中可能出现的问题网页设计与制作教程的页数是
  • 表白网站制作软件成都网络科技公司排名
  • 网站建设演示ppt模板下载张掖哪家公司做网站
  • 用wordpress做微网站平面设计师作品网站
  • 厦门翔安区建设局网站i网站建设
  • 知乎 php网站开发书籍_深圳集团网站建设报价
  • 成都微信网站设计网站建设整改落实情况
  • 音乐网站建站wordpress主题什么值得买
  • 如何建立公司网站多少钱vps 上装wordpress
  • 网站建设模板之家免费下载网站自响应
  • 网站开发主要使用的技术邯郸市市长
  • 国外有没有网站是做潘多拉的广州网站制作信科建设
  • 溧阳做网站价格站长之家网址查询
  • 商城微网站如何做做黑网站赚钱
  • seo短视频网页入口引流网站阿里云网站建设方案
  • 网站上的个人词条怎么做的定制型营销网站建设
  • 网站 昆明百度竞价网站建设
  • 怎样创建自己公司网站办公室设计图
  • 沙发网站建设网站建设的基础资料
  • 创业做社交网站有哪些网页制作基础教程例子
  • 深圳福田网站建设公司贪玩游戏官网
  • 深圳福田区网站建设企业宣传网站建设需求说明书