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

做网站前端用什么软件域名注册后怎么使用

做网站前端用什么软件,域名注册后怎么使用,打开网站弹出窗口代码,我是seo关键词我的码云 我的string码云 分析总结 1.项目结构 所有的类和函数需要在namespace中实现&#xff0c;要和string高度对应 private:char* _str;//字符串size_t _size;//有效长度size_t _capacity;//总空间&#xff0c;包括\0const static size_t npos-1;2.定义变量 <1> 所…

我的码云

我的string码云

分析总结

1.项目结构

所有的类和函数需要在namespace中实现,要和string高度对应

	private:char* _str;//字符串size_t _size;//有效长度size_t _capacity;//总空间,包括'\0'const static size_t npos=-1;
2.定义变量

<1> 所有的变量和函数要放到class中,而且要规定private类型
<2> 其中有一个是特殊的,const static size_t npos=-1;这是需要特别记忆,size_t npos赋值为-1,表示无符号整形的最大值
对于长度和总空间一定不会是小于0的,我们依旧设为无符号整形

3.调试代码区域

因为这是在namespace中实现的,我们调试代码可以需要加上using namespace或者直接在namespace中写一个调试函数
在这里插入图片描述

4.构造函数
		string():_str(new char[sizeof(char)*4]),_size(0),_capacity(4){_str[0] = '\0';}

对象初始化的时候,我们首选初始化列表进行初始化(效率更高),并且我们在初始化列表中,为了防止别人随便改变变量定义的顺序,导致初始化列表错乱,我们会选择在函数中进行初始化。(初始化列表的初始化顺序并不是根据列表中数据出现的顺序决定的,而是由定义的顺序决定的)

		string(){_size = 0;_capacity = 4;_str = new char[_capacity];_str[0] = '\0';}

在初始话的时候还要注意变量的值要选取合适,并且要注意字符串的结尾不论是有没有字符串都应该为'\0'

拷贝构造和析构函数
string(const string& other)
{_size = other._size;_capacity = other._capacity;_str = new char[sizeof(char) * _capacity];strcpy(_str, other._str);
}~string()
{delete[] _str;
}

代码中char数组需要设为动态的空间,要进行深拷贝防止浅拷贝带来的问题
拷贝构造中要注意加const防止传来的是匿名对象匿名对象有常性,需要const修饰才行,对于重载=也是需要加const

重载运算符
类内friend ostream& operator<<(ostream& out, string& str);friend istream& operator>>(istream& in, string& str);类外ostream& operator<<(ostream& out, string& str){cout << str.c_str();return out;}istream& operator>>(istream& in, string& str){cin >> str._str;return in;}

等我回来再叙述iostream

因为这个是<<和>> 必须要在类外实现,并且要调用类中private成员变量,我们必须使用friend标识符
我在<<调用的c_str()函数也就是说,我们的<<可以不用再类内声明成friend
也就是说,只有在需要调用类中的变量的时候才需要写成friend

迭代器
简单介绍

1.using namespace 的情况下

	string::iterator it=str.begin();

2.没有使用using namespace 的定义形式

	bit::string::iterator tem;

既要指明namespace又要指明class

实现

iterator是一个类型,他定义了it,it接收了begin()的返回值,it要对char数组进行访问,而且要能通过it自增进行连续的访问,那么it就应该是指针类型char*,同时又要写成iterator的形式,就需要进行typedef

		typedef char* iterator;//必须要将这个定义放出来,不然类外就无法使用声明iterator begin(){return _str;}iterator end(){return _str + _size + 1;}

在写end函数的时候一定要清楚,end指向的是整个数组结尾的下一个位置
typedef char* iterator;这个定义一定要放到public中,不能放到private中,因为在外面进行定义迭代器的时候需要访问到iterator这个类型

::作用域操作符,可以对类内public静态成员变量和函数进行访问,以及上面这种类型进行访问

reserve和resize
		void resize(size_t n, char c = '\0'){delete[] _str;_str = new char[sizeof(char) * (n + 1)];_size = n;_capacity = n + 1;for (int i = 0; i < n; i++)_str[i] = c;_str[n] = '\0';}
		void reserve(size_t all){int flag = 0;while (all >= _capacity)_capacity *= 2, flag = 1;if (flag){char* tem = _str;_str = new char[_capacity];strcpy(_str, tem);}}

reserve如果是缩小的话,不影响空间,不影响数据
resize如果是缩小的话,影响空间,影响数据

substr
		string substr(size_t start=0, size_t n=npos) const{string ans;//临时变量,不能返回引用if (start >= _size) return ans;for (int i = start; i < start + n && i < _size; i++)ans.push_back(_str[i]);return ans;}

在使用substr的时候,string ans;是临时变量,不能返回引用,虽然string内部的数组是动态开辟的,但是函数结束的时候,就会自动调用析构函数释放空间

http://www.hkea.cn/news/176802/

相关文章:

  • 成都网站建设科技公seo营销外包公司
  • 重庆有哪些做网站 小程序的百度搜索引擎的特点
  • 仁怀哪里可以做网站自动秒收录网
  • 重庆市建设局网站推广软件一键发送
  • 合肥网络推广网络运营网站seo诊断分析和优化方案
  • 网站优化公司免费咨询sem优化推广
  • 个人做网站赚钱么宁波seo推荐推广平台
  • 员工支付做网站的费用分录成都营销型网站制作
  • 专业做网站的公司邢台专业做网站关键词搜索优化
  • 电商网站建设方案模板杭州百度首页优化
  • 网站建设服务价格东莞市网站建设
  • 网站开发所需要的的环境佛山网络推广哪里好
  • php网站的优点关键路径
  • 电子政务与网站建设 总结湖南网站推广
  • 境外网站做网站涉黄互联网媒体广告公司
  • 河南做网站公司汉狮怎么做蛋糕
  • 哈 做网站网店代运营收费
  • 制作网页的三大技术是什么郑州seo顾问
  • 网站建设报价流程行业网站网址
  • 提供邯郸做wap网站网页推广方案
  • 网站从域名广告营销公司
  • 网站链接的常见形式免费广告网
  • 微信微网站开发教程百度大数据平台
  • 网站服务设计引流推广是什么意思
  • 学校网站建设管理办法本周新闻热点事件
  • 网站移动版怎么做网站创建公司
  • wordpress 微商城模板下载地址苏州seo推广
  • 珠海网站哪家好百度com百度一下你
  • wordpress wp.net网络优化工程师是做什么的
  • 刷会员网站怎么做外贸如何推广