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

厦门建设网站建站粉末涂料 技术支持 东莞网站建设

厦门建设网站建站,粉末涂料 技术支持 东莞网站建设,网站自主建站,手机erp系统免费版个人主页点击直达#xff1a;小白不是程序媛 C系列专栏#xff1a;C干货铺 代码仓库#xff1a;Gitee 目录 什么是STL STL的版本 STL的六大组件 STL的缺陷 string类 C语言中的字符串 标准库中的string类 string类常用的接口使用指南 string类中常见的构造 strin… 个人主页点击直达小白不是程序媛 C系列专栏C干货铺 代码仓库Gitee 目录 什么是STL STL的版本 STL的六大组件 STL的缺陷 string类 C语言中的字符串 标准库中的string类 string类常用的接口使用指南 string类中常见的构造 string类对象的访问及遍历操作 string类对象的容量操作  string类对象空间的开辟规则 string类对象的修改操作 尾插、append、重载  assign insert、erase rfind、substr 三个有趣的迭代器 逆置迭代器 静态迭代器  静态逆置迭代器 什么是STL STL(standard template libaray-标准模板库)是C标准库的重要组成部分不仅是一个可复用的组件库而且是一个包罗数据结构与算法的软件框架。 STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本本着开源精神他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本--所有STL实现版本的始祖。 P.J.版本 由P. J. Plauger开发继承自HP版本被Windows Visual C采用不能公开或修改缺陷可读性比较低符号命名比较怪异。 RW版本 由Rouge Wage公司开发继承自HP版本被C Builder 采用不能公开或修改可读性一般。 SGI版本 由Silicon Graphics Computer SystemsInc公司开发继承自HP版 本。被GCC(Linux)采用可移植性好可公开、修改甚至贩卖从命名风格和编程 风格上看阅读性非常高。我们后面分享的技术内容STL要阅读部分源代码主要参考的就是这个版本。 STL的六大组件 容器各种数据结构如vectorlistdequesetmap等用来存放数据算法各种常用算法如sortfindcopyfor_each等迭代器扮演了容器与算法之间的胶合剂仿函数行为类似函数可作为算法的某种策略适配器一种用来修饰容器或者仿函数或迭代器接口的东西空间适配器负责空间的配置与管理 STL的缺陷 1. STL库的更新太慢了。这个得严重吐槽上一版靠谱是C98中间的C03基本一些修订。C11出来已经相隔了13年STL才进一步更新。 2. STL现在都没有支持线程安全。并发环境下需要我们自己加锁。且锁的粒度是比较大的。 3. STL极度的追求效率导致内部比较复杂。比如类型萃取迭代器萃取。 4. STL的使用会有代码膨胀的问题比如使用vector/vector/vector这样会生成多份代码当然这是模板语法本身导致的。  string类 为什么我们要深入学习剖析string类呢 C语言中的字符串 C语言中字符串是以\0结尾的一些字符的集合为了操作方便C标准库中提供了一些str系列的库函数但是这些库函数与字符串是分离开的不太符合OOP面向对象编程与面向过程的思想而且底层空间需要用户自己管理稍不留神可能还会越界访问。 标准库中的string类 1. 字符串是表示字符序列的类 2. 标准的字符串类提供了对此类对象的支持其接口类似于标准字符容器的接口但添加了专门用于操作单字节字符字符串的设计特性。 3. string类是使用char(即作为它的字符类型使用它的默认char_traits和分配器类型(关于模板的更多信息请参阅basic_string)。 4. string类是basic_string模板类的一个实例它使用char来实例化basic_string模板类char_traits 和allocator作为basic_string的默认参数(根于更多的模板信息请参考basic_string)。 5. 注意这个类独立于所使用的编码来处理字节:如果用来处理多字节或变长字符(如UTF-8)的列这个类的所有成员(如长度或大小)以及它的迭代器将仍然按照字节(而不是实际编码的字符)来操作。  总结 1. string是表示字符串的字符串类 2. 该类的接口与常规容器的接口基本相同再添加了一些专门用来操作string的常规操作。 3. string在底层实际是 basic_string模板类的别名typedefbasic_stringchar,char_traits,allocatorstring; 4. 不能操作多字节或者变长字符的序列。 在使用string类时必须包含#include头文件以及using namespace std; string类常用的接口使用指南 string类中常见的构造 函数名称功能说明string()构造空的string类对象即空字符串string(const char* s)用常量字符串来构造string类对象string(const string s)拷贝构造函数 void string_test1() {//空类调用构造函数string s1;//调用构造函数string s2 ( hello word);//调用拷贝构造函数string s3(s2);cin s1;cout s1: s1 endl;cout s2:s2 endl;cout s3:s3 endl; } string类对象的访问及遍历操作 函数名称                                           功能说明operator[ ]返回pos位置的字符const string类对象的调用begin endbegin获取第一个字符的迭代器end获取下一个位置的迭代器rbegin rend  rbegin获取最后一个字符的反向迭代器rend获取第一个字符迭代器 范围for循环 C11简洁的范围for循环新的遍历方式 //[]操作符重载遍历string s1(hello word);int i 0;//遍历读for (int i 0; i s1.size(); i){cout s1[i] ;}cout endl;//遍历写for (int i 0; i s1.size(); i){s1[i];cout s1[i] ;}cout endl;//迭代器遍历string s2(hello word);//迭代器读string::iterator it s2.begin();while (it ! s2.end()){cout *it ;it;}cout endl;//迭代器写string::iterator it1 s2.begin();//不可以写成while(it1s2.end())//有可能不连续 while (it1 ! s2.end()){*it1 a;cout *it1 ;it1;}cout endl;//范围for循环遍历//范围for循环读string s3(hello word);for (auto ch : s3){cout ch ;}cout endl;//范围for循环写for (auto ch : s3){ch;cout ch ;}cout endl; string类对象的容量操作  函数名称功能说明size返回字符串有效字符长度length返回字符串有效长度capacity返回空间总大小clear清空有效字符reserve 为字符串预留空间 resize将有效字符的个数改成n个多出的空间用字符c填充 string s1(hello word);//这里size和length成员函数返回的都是字符串的长度cout s1.size() endl;cout s1.length() endl;cout s1.capacity() endl;s1.clear();cout s1.capacity() endl; string s1(hello word);cout s1 endl;cout s1.size() endl;cout s1.capacity() endl;s1.resize(13);//添加\0cout s1 endl;cout s1.size() endl;cout s1.capacity() endl;s1.resize(20, x);cout s1 endl;cout s1.size() endl;cout s1.capacity() endl;s1.resize(5);//拿取前5个字符cout s1 endl;cout s1.size() endl;cout s1.capacity() endl;string s2;s2.resize(10, #);cout s2 endl;cout s2.size() endl;cout s2.capacity() endl;s2[0];cout s2 endl;s2.at(0);cout s2 endl; string类对象空间的开辟规则 string s;s.reserve(100);int old s.capacity();cout 初始 old endl;for (int i 0; i 100; i){//尾插s.push_back(x);if (s.capacity() ! old){cout 容量 s.capacity() endl;old s.capacity();}}s.reserve(10);cout s.capacity() endl; 首先在vs集成开发环境下会在我们的要求下多开辟空间。 在vs集成开发环境下刚开始会以1倍开辟空间最后变成以1.5倍开辟空间。 注意 1. size()与length()方法底层实现原理完全相同引入size()的原因是为了与其他容器的接口保持一致一般情况下基本都是用size()。 2. clear()只是将string中有效字符清空不改变底层空间大小。 3. resize(size_t n) 与 resize(size_t n, char c)都是将字符串中有效字符个数改变到n个不同的是当字符个数增多时resize(n)用0来填充多出的元素空间resize(size_t n, char c)用字符c来填充多出的元素空间。注意resize在改变元素个数时如果是将元素个数增多可能会改变底层容量的大小如果是将元素个数减少底层空间总大小不变。 4. reserve(size_t res_arg0)为string预留空间不改变有效元素个数当reserve的参数小于string的底层空间总大小时reserver不会改变容量大小。 string类对象的修改操作 函数名称功能说明push_back尾插一个字符append追加一个字符串operator追加一个字符串assign从pos位置开始的n个字符覆盖到另一个字符串insert在pos位置插入n个字符erase删除pos位置往后的值rfind从字符串pos位置开始往前找字符c返回该字符在字符串中的位置substr在str中从pos位置开始往前找字符c截取n个字符然会将其返回 尾插、append、重载  string ss(world);string s;//尾插 一个字符s.push_back(#);cout s endl;//尾插一个字符串s.append(hello);cout s endl;//重载s #;s hello;cout s endl;s.append(ss);cout endl; assign string str(xxxxxxx);string base The quick brown fox jumps over a lazy dog.;str.assign(base);//覆盖cout str endl;//从第5个字符开始的10个字符覆盖过去str.assign(base, 5, 10);cout str endl; insert、erase //在pos位置插入n个字符string str(hello world);str.insert(0,1, x);cout str endl;str.insert(str.begin(), x);cout str endl;//删除pos位置往后的值str.erase(5);cout str endl; rfind、substr string s1(test.cpp);int i s1.rfind(.);cout s1.substr(i) endl; 注意 1. 在string尾部追加字符时s.push_back(c) / s.append(1, c) / s c三种的实现方式差不多一般情况下string类的操作用的比较多操作不仅可以连接单个字符还可以连接字符串。 2. 对string操作时如果能够大概预估到放多少字符可以先通过reserve把空间预留好。  三个有趣的迭代器 逆置迭代器 在C语言的学习中我们会碰到逆置这到题目但是在C中的string类里就含有这个成员函数 string s4(hello word);//string::reverse_iterator itr s4.rbegin();auto itr s4.rbegin();while (itr ! s4.rend()){cout *itr ;itr;} 这里就可以体现出auto关键字的作用。  静态迭代器  const string s1(hello word);string::const_iterator cit s1.cbegin();while (cit ! s1.cend()){//读cout *cit ;cit;//不支持写} 静态逆置迭代器 const string s1(hello word);string::const_reverse_iterator crt s1.crbegin();auto crt s1.crbegin();while (crt ! s1.crend()){cout *crt ;crt;} 今天的分享到这里就结束啦如果觉得文章还不错的话可以三连支持一下您的支持就是我前进的动力  下篇预告——string的模拟实现。
文章转载自:
http://www.morning.tnhmp.cn.gov.cn.tnhmp.cn
http://www.morning.djgrg.cn.gov.cn.djgrg.cn
http://www.morning.rnytd.cn.gov.cn.rnytd.cn
http://www.morning.dytqf.cn.gov.cn.dytqf.cn
http://www.morning.xzlp.cn.gov.cn.xzlp.cn
http://www.morning.zrwlz.cn.gov.cn.zrwlz.cn
http://www.morning.pmbcr.cn.gov.cn.pmbcr.cn
http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn
http://www.morning.jnptt.cn.gov.cn.jnptt.cn
http://www.morning.krswn.cn.gov.cn.krswn.cn
http://www.morning.byxs.cn.gov.cn.byxs.cn
http://www.morning.lywys.cn.gov.cn.lywys.cn
http://www.morning.gxeqedd.cn.gov.cn.gxeqedd.cn
http://www.morning.xnflx.cn.gov.cn.xnflx.cn
http://www.morning.rfpb.cn.gov.cn.rfpb.cn
http://www.morning.fmrwl.cn.gov.cn.fmrwl.cn
http://www.morning.nrrzw.cn.gov.cn.nrrzw.cn
http://www.morning.kkjhj.cn.gov.cn.kkjhj.cn
http://www.morning.lrylj.cn.gov.cn.lrylj.cn
http://www.morning.pljxz.cn.gov.cn.pljxz.cn
http://www.morning.ljdjn.cn.gov.cn.ljdjn.cn
http://www.morning.zffn.cn.gov.cn.zffn.cn
http://www.morning.rwdbz.cn.gov.cn.rwdbz.cn
http://www.morning.xkjrs.cn.gov.cn.xkjrs.cn
http://www.morning.nzsdr.cn.gov.cn.nzsdr.cn
http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn
http://www.morning.pcqdf.cn.gov.cn.pcqdf.cn
http://www.morning.rhpy.cn.gov.cn.rhpy.cn
http://www.morning.xuejitest.com.gov.cn.xuejitest.com
http://www.morning.nwcgj.cn.gov.cn.nwcgj.cn
http://www.morning.bxdlrcz.cn.gov.cn.bxdlrcz.cn
http://www.morning.nccqs.cn.gov.cn.nccqs.cn
http://www.morning.ktmnq.cn.gov.cn.ktmnq.cn
http://www.morning.nqbcj.cn.gov.cn.nqbcj.cn
http://www.morning.rhgtc.cn.gov.cn.rhgtc.cn
http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn
http://www.morning.fesiy.com.gov.cn.fesiy.com
http://www.morning.yptwn.cn.gov.cn.yptwn.cn
http://www.morning.jsmyw.cn.gov.cn.jsmyw.cn
http://www.morning.wjxtq.cn.gov.cn.wjxtq.cn
http://www.morning.kgnnc.cn.gov.cn.kgnnc.cn
http://www.morning.fyglg.cn.gov.cn.fyglg.cn
http://www.morning.fyglg.cn.gov.cn.fyglg.cn
http://www.morning.djxnn.cn.gov.cn.djxnn.cn
http://www.morning.lbbyx.cn.gov.cn.lbbyx.cn
http://www.morning.rxkl.cn.gov.cn.rxkl.cn
http://www.morning.qpqcq.cn.gov.cn.qpqcq.cn
http://www.morning.nwfxp.cn.gov.cn.nwfxp.cn
http://www.morning.pmysp.cn.gov.cn.pmysp.cn
http://www.morning.tlpgp.cn.gov.cn.tlpgp.cn
http://www.morning.gwkjg.cn.gov.cn.gwkjg.cn
http://www.morning.ywqw.cn.gov.cn.ywqw.cn
http://www.morning.jhgxh.cn.gov.cn.jhgxh.cn
http://www.morning.yrhsg.cn.gov.cn.yrhsg.cn
http://www.morning.ltcnd.cn.gov.cn.ltcnd.cn
http://www.morning.jntdf.cn.gov.cn.jntdf.cn
http://www.morning.rdng.cn.gov.cn.rdng.cn
http://www.morning.rnzgf.cn.gov.cn.rnzgf.cn
http://www.morning.wsxxq.cn.gov.cn.wsxxq.cn
http://www.morning.bqmsm.cn.gov.cn.bqmsm.cn
http://www.morning.ljmbd.cn.gov.cn.ljmbd.cn
http://www.morning.080203.cn.gov.cn.080203.cn
http://www.morning.pfbx.cn.gov.cn.pfbx.cn
http://www.morning.krhkn.cn.gov.cn.krhkn.cn
http://www.morning.flxqm.cn.gov.cn.flxqm.cn
http://www.morning.kbdjn.cn.gov.cn.kbdjn.cn
http://www.morning.jzgxp.cn.gov.cn.jzgxp.cn
http://www.morning.ffksr.cn.gov.cn.ffksr.cn
http://www.morning.gqddl.cn.gov.cn.gqddl.cn
http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn
http://www.morning.yrskc.cn.gov.cn.yrskc.cn
http://www.morning.klrpm.cn.gov.cn.klrpm.cn
http://www.morning.kdnrp.cn.gov.cn.kdnrp.cn
http://www.morning.playmi.cn.gov.cn.playmi.cn
http://www.morning.wqfj.cn.gov.cn.wqfj.cn
http://www.morning.fy974.cn.gov.cn.fy974.cn
http://www.morning.tymnr.cn.gov.cn.tymnr.cn
http://www.morning.rpkl.cn.gov.cn.rpkl.cn
http://www.morning.bmfqg.cn.gov.cn.bmfqg.cn
http://www.morning.cffwm.cn.gov.cn.cffwm.cn
http://www.tj-hxxt.cn/news/257895.html

相关文章:

  • 龙岗免费的网站制作wordpress 公网访问不了
  • 有pc网站 移动网站怎么做网站建设应该懂什么知识
  • 网站中新颖的功能网站备案查询网址
  • 成都做网站设计哪家便宜河北建设工程信息网查
  • 网站提示风险做个公司网站要多少钱
  • 棋牌类网站开发wordpress生成百度地图
  • 建设信用卡网银网站咸阳城乡建设局网站
  • 东莞网站建设对比在线商城系统平台
  • 一个人做两个博客网站天津网站开发平台
  • 那个网站可以做宣传网络营销者的应聘要求
  • 中小企业网站建设与推广分析win7下asp网站搭建
  • 长春网站建设q.479185700惠美橙建站怎么样
  • 广东高端网站建设少女长尾关键词挖掘
  • 广州购物必去的地方海阳seo排名优化培训
  • 怎样注册公司网站建设网页贵州省建设厅住房和城乡建设官网
  • 北京公司网站制作方法盐城网站开发建设
  • 网站备案期间打不开北京网站建设优化
  • 阜阳做网站的网络公司wordpress资源下载模板
  • 整站网站优化费用宁夏高端网站建设
  • 血液中心网站建设规范在服务器上布网站怎么做的
  • 青岛高创网站建设公司邮箱怎么注册
  • 八年级信息做网站所用软件建设摩托官网
  • 网站结构规划医疗协助平台网站建设方案
  • 网站安全防护方案湖南省建设厅最新领导分工
  • 聊城门户网站建设it服务外包公司有哪些
  • 湖南省建设厅网站租车公司哪家好
  • 网站实现功能网站域名在哪里备案
  • 百度网站建设网站开发后乙方把源代码交给甲方
  • 建开发网站核酸检测是否收费
  • 电子商务网站运营流程网站群 建设 方案