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

南宁 建网站江门有什么网站推广

南宁 建网站,江门有什么网站推广,做网站需要机吗,正规微商免费推广软件为什么要有string容器 string#xff1a;其实就是一个字符串,c对字符串进行了封装的#xff0c;封装到一个类里面#xff0c;这样用户就不用担心开辟空间的问题#xff0c;只需要往string类里放字符串就可以了#xff0c;string其实还可以自增长 很多人就会有一个疑问其实就是一个字符串,c对字符串进行了封装的封装到一个类里面这样用户就不用担心开辟空间的问题只需要往string类里放字符串就可以了string其实还可以自增长 很多人就会有一个疑问以前在c语言中已经有字符串了其实c语言中表示字符串就是char*,也就是字符数组\0 string应用 string类的应用 string类常用接口 构造 string s1;string s2(hello);string s3(10, $);string s4(s3);容量 void TestString() {string s(hello);cout s.size() endl; //size和length都是求字符串的有效个数cout s.length() endl;cout s.capacity() endl;if (s.empty())cout NULL endl;elsecout NOT NULL string endl;//只清空string类中有效字符个数不会改变底层空间的大小s.clear(); //不会清空容量cout s.size() endl;cout s.capacity() endl;if (s.empty())cout NULL endl;elsecout NOT NULL string endl; }resize() void resizesize_t n, char ch功能—将string类中的有效字符改变到n个多的字符采用ch进行填充 注意 将string类中有效元素缩小只改变有效元素的个数不会改变底层空间的大小如果是将string类中有效元素增多可能需要扩容 void TestString3() {string s(hello);cout s endl;cout s.size() endl;cout s.capacity() endl;//resize 10个有效字符原来有5个多出来的5个用!号进行填充s.resize(10,!);cout s endl;cout s.size() endl;cout s.capacity() endl;}reserve() void reserve(size_t newcapacity)newcapacity oldcapacity(string 类旧空间增多----容量改变(最终容量大小) newcapacity)newcapacity oldcapacity(string 类旧空间缩小----该函数直接返回除非newcapacity 15,缩小到15 注意 只改变容量大小不会改变有效元素个数 void TestString4() {string s(hello);cout s.size() endl;cout s.capacity() endl;s.reserve(20);cout s.size() endl;cout s.capacity() endl;s.reserve(40);cout s.size() endl;cout s.capacity() endl;s.reserve(24);cout s.size() endl;cout s.capacity() endl;s.reserve(5);cout s.size() endl;cout s.capacity() endl; }string类维护了一个空间16字节 元素访问 void TestString5() {string s(hello);cout s[0] endl;s[0] H;//[] 如果越界----assert触发cout s.at(2) endl;s.at(2) L;//s.at()如果越界---抛出out_of_range的异常//不同点//cout s[10] endl; //越界访问cout s.at(10) endl; }cout s[10] endl; //越界访问cout s.at(10) endl;//越界访问元素修改 void TestString6() {string s1;s1.push_back(I);s1 Love ;string s2(you);s1 s2;s1.append(1, ,);s1.append(祖国);s1.append(3, !);cout s1 endl; }string类扩容机制 vs—PJ----1.5倍扩容Linux-----SGI----2倍扩容如果提前直到大概要往string类存放多少个元素可以通过reserve将空间给好 void TestPushBack() { string s; //维护一个数组最多放15个有效字符size_t sz s.capacity(); cout making s grow:\n; for (int i 0; i 100; i) { s.push_back( c); if (sz ! s.capacity()) //sz记录上一次容量大小{ sz s.capacity(); cout capacity changed: sz \n; } } }字符串特殊操作 void TestString7() {string s(123456);int ret atoi(s.c_str());}//find rfind void TestString8() {string s(hello world);size_t pos s.find( );if (pos ! string::npos){cout is in sendl;}pos s.find(world);if (pos ! string::npos){cout world is in s endl;}//获取文件后缀string ss(2019-10-26.cpp.cpp);pos ss.rfind(.) 1; //后缀的位置从.的后面开始cout pos endl;string filepos ss.substr(pos);cout filepos endl;}迭代器(string中很少用到) 三种遍历方法 void TestString9() {string s(hello);for (auto e : s){cout e;}cout endl;for (int i 0; i s.size(); i)cout s[i];cout endl;//char *string::iterator it s.begin();while (it!s.end()){cout *it ;it;}cout endl; }反转字符串 一个函数调用就可以 //反转字符串 void reversestring(string s) {//char* begin (char *)s.c_str();//char* end begin s.size() - 1;//while (begin end)//{// swap(*begin, *end);// begin;// end--;//}reverse(s.begin(), s.end()); }字符串中第一个唯一字符 字符做为数组下标 class Solution { public:int firstUniqChar(string s) {//1.统计每个字符出现的次数int count[256]{0};for(auto e:s){count[e];}//2.找第一个只出现一次的字符for(size_t i 0; i s.size(); i){if(count[s[i]] 1)return i;}return -1;} };字符串最后一个单词的长度 cin用来接受字符串如果字符串中出现空格换行是无法拿到整个字符串的 #includeiostream #includestring using namespace std;int main() {string s;getline(cin,s);//找到最后一个单词的位置cout s.substr(s.rfind( )1).size();return 0; }字符串相加 大数相加无法用普通的类型进行保存 可以把这些数据看成是字符串 class Solution { public:string addStrings(string num1, string num2) {int LSize num1.size(); int RSize num2.size(); // 以长字符串作为外部循环 if(LSize RSize) { num1.swap(num2); swap(LSize, RSize); } string strRet; strRet.reserve(LSize1); char cRet 0; char cstep 0;for(size_t i 0; i LSize; i) { cRet num1[LSize - i - 1] - 0 cstep; cstep 0; if(i RSize) { cRet num2[RSize - i - 1] - 0; } if(cRet 10) { cRet - 10; cstep 1; } strRet cRet 0; } if(cstep) strRet 1; reverse(strRet.begin(), strRet.end()); return strRet; } };string模拟实现 string模拟实现 如何实现 string是动态管理字符串不论多少个数都可以管理编译器中会有一个静态数组刚开始大小为16字节有效元素个数为15个所以当有效字符小于15个时直接用静态数组存放效率高一些 我们实现的string只给出动态数组维护一个char*指针创建对象开辟空间即可 构造 有参构造 用户在创建对象时一般有参的话都会给出c风格的字符串所以我们的参数就是一个char*的指针最好设个默认值为空。然后在有参构造里做两件事情一个是申请空间另外一个就是拷贝数据 但是要注意用户一般很傻有可能会传一个空的指针进来会引起代码崩溃。所以我们一定要对传来的数据进行判空处理如果为空则初始化为空串即可。 string(char *str ){//如果指针为空则初始化位空字符串if (nullptr str)str ;//申请空间_str new char[strlen(str) 1];//strcpy(_str, str);}拷贝构造 系统会给出默认的拷贝构造但是存在浅拷贝问题 什么是浅拷贝 浅拷贝可能通过默认的拷贝构造发生也有可能通过编译器默认的赋值运算符的重载发生。 所以我们在拷贝构造和赋值时让每个对象都要拥有一份独立的资源 string(const string s):_str(new char[strlen(s._str)1]) //开辟空间{strcpy(_str, s._str);}赋值运算符重载 开辟新空间拷贝元素释放旧空间指向新空间 string operator(const string s){//自己给自己赋值不用做任何操作if (this ! s){//不是自己给自己赋值//1.申请新空间char *temp new char[strlen(s._str) 1];//2.拷贝数据strcpy(temp, s._str);//3.释放原来空间delete[]_str;//4.原空间指针指向新空间_str temp;}return *this;}析构 看一下当前对象指针有没有资源如果有释放掉随后指针指向空防止野指针。 ~string(){if (_str)delete[]_str;_str nullptr;}以上的是模拟实现的一个string的版本 另外一个版本实现string 资源的转移 namespace bite {class string{public:string(char *str ){//如果指针为空则初始化位空字符串if (nullptr str)str ;//申请空间_str new char[strlen(str) 1];strcpy(_str, str);}string(const string s):_str(nullptr){string strTemp(s._str);swap(_str, strTemp._str);}string operator(const string s){//自己给自己赋值不用做任何操作if (this ! s){string strTemp(s._str);swap(_str, strTemp._str);}return *this;}~string(){if (_str)delete[]_str;_str nullptr;}//编译器生成的默认赋值运算符重载存在浅拷贝而且会有资源泄露没有释放资源private:char * _str;};}此版本有一个缺陷就是创立的临时对象的地址不为空则会引起代码崩溃在vs2013编译器下这个样实现的string没有问题因为vs2013默认值为空其他编译器给的默认值可能是随机值。我们可以直接在拷贝构造函数加一个参数列表给临时对象赋值为空 还有一种引用计数的方式采用引用计数来解决浅拷贝的问题 写时拷贝
http://www.sadfv.cn/news/251715/

相关文章:

  • 网站设计的大公司网站建设开票多少个点
  • 网站建设人员的组织wordpress百度收录查阅
  • 餐饮环境评估在哪个网站做网站建设初期工作方案
  • 免费精品网站模板网络开发公司简介
  • 孝感网站开发软文发布平台乐云seo
  • 做网站需要具备什么要求wordpress 好seo吗
  • 网站导航提交入口大全大数据技术就业和发展前景
  • 网站后台psd廊坊网站建设冀icp备
  • 如何将网站让百度收录换域名对网站的影响
  • 台海最新消息24小时更新广州网站运营专注乐云seo
  • 嘉兴企业网站免费订单管理app
  • 怎么让网站收录所有关键词
  • 制作网页网站代码衡阳网站设计公司
  • 咖啡店网站首页怎么做长沙好的网站建设公司排名
  • 物流公司做网站注重什么问题做网站用中文路径
  • 绍兴专门做网站网站建设vip教程
  • 酒店如何做团购网站连云港做网站公司
  • 北京中国建设工程造价管理协会网站wordpress 搬家 空白
  • asp.net网站制作步骤做链接哪个网站好
  • 腾讯云网站建设流程图国外服务器购买推荐
  • 一站式服务建站怎么做网站然后卖出去
  • 自己买个服务器做网站海南百度总代理
  • wordpress怎么防站临沂网站建设公司哪家好
  • 珠海网站建设推广方案公司网站维护更新流程
  • php商城网站开发实例视频教程手机装修设计图制作软件
  • 网站技术解决方案的内容网上怎么找工作的平台
  • 江苏瀚和建设网站wordpress别名 文章id
  • 网站的链接要怎么做潍坊网站制作保定公司电话
  • 合肥建设企业网站临沂门户网站制作
  • 车公庙网站建设免费的静态网站托管