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

海外建站流程网站建设与维护课程设计报告书

海外建站流程,网站建设与维护课程设计报告书,网上注册公司流程和方法,岳阳市官网#x1f493;博主CSDN主页:杭电码农-NEO#x1f493;   ⏩专栏分类:C从入门到精通⏪   #x1f69a;代码仓库:NEO的学习日记#x1f69a;   #x1f339;关注我#x1faf5;带你学习C   #x1f51d;#x1f51d; STL标准库 1. 前言2. STL库的版本以及缺陷3. ST… 博主CSDN主页:杭电码农-NEO   ⏩专栏分类:C从入门到精通⏪   代码仓库:NEO的学习日记   关注我带你学习C   STL标准库 1. 前言2. STL库的版本以及缺陷3. STL库的六大组件4. string的使用4.1 string类对象常见构造 5. string类对象的容量操作5.1 size和capacity接口函数5.2 empty和clear函数5.3 resize和reserve函数 6. 迭代器以及string的访问和遍历6.1 运算符重载[ ]6.2 反向迭代器和范围for 7. string类对象的修改操作7.1 c_str和find函数 8. insert和erase函数9. 总结以及拓展 1. 前言 由于C语言的标准库不够强大 没有数据结构和一些基本算法 什么都需要程序员自己实现 所以C语言在某种意义上并不实用 本章重点: 本章会简单介绍STL的各个版本 STL的六大组件和怎样学STL STL的缺陷 重点讲解string的使用 熟悉string的重要接口 目标是讲完能够独自使用string库 2. STL库的版本以及缺陷 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要阅读部分源代码主要参考的就是这个版本 比较重要的是P.J版和SGI版 一个被Windows系统采用 一个被Linux系统采用 STL库的缺陷: STL库的更新太慢了。 这个得严重吐槽上一版靠谱是C98中间的C03基本一些修订。C11出来已经相隔了13年STL才进一步更新。STL现在都没有支持线程安全。 并发环境下需要我们自己加锁。且锁的粒度是比较大的。STL极度的追求效率导致内部比较复杂。比如类型萃取迭代器萃取。 3. STL库的六大组件 请看下图: 后期对于STL的学习将按照以下顺序: 进阶内容: 各种算法 string vector list stack queue deque priority_queue 仿函数 高阶内容: map和set AVL数和红黑树 哈希相关 4. string的使用 首先,所有的STL库函数的使用都要查看 C字典来学习接口函数,并且模拟实现 先看string解释(不懂可以翻译) 简单来说,string是表示字符串的字符串类 该类的接口与常规容器的接口基本相同 再添加了一些专门用来操作string的常规操作 4.1 string类对象常见构造 一共有七个构造函数,但实用的有下面5个 用一个字符串构造 string str(abcdefg);用一个字符构造 string str(w);用n个字符c构造 string str(10,x);用一段迭代器区间构造 string tmp(abcdefg); string str(tmp.begin(),tmp.end());拷贝构造 string tmp(abcdefg); string str(tmp);注:迭代器类似于指针,在string和 vector中,迭代器就是普通指针 在后期会介绍迭代器的概念 5. string类对象的容量操作 请看下图: string的内部实现中有size 和capacity两个和容量相关的变量 size代表字符串有效长度 capacity代表字符串的实际长度 5.1 size和capacity接口函数 size和capacity函数比较简单 可自行查看接口函数的返回值,参数 使用方法: string str(abcdefg); int size str.size(); int capacity str.capacity();切记要加上括号! size和capacity是成员函数 用.或者-访问 5.2 empty和clear函数 empty函数十分简单 若类对象是空串,就返回true 若不是空串就返回false clear需要注意的点: clear后,使用empty会返回trueclear函数只将size清零clear函数不会改变capacity 5.3 resize和reserve函数 resize函数需要注意的点: 此函数既能改变size也能改变capacity在不初始化的情况下直接将size扩为n将size扩为n并且用n个字符c初始化 reserve函数需要注意的点: 此函数只改变capacity不改变size 6. 迭代器以及string的访问和遍历 迭代器: iterator 像指针一样的类型,用法和指针相似 函数begin返回第一个位置的迭代器函数end返回size位置的迭代器 迭代器的使用: string str(abcdefg); string::iterator it str.begin(); while(it ! str.end()) {cout*itendl;it; }迭代器可以像指针一样和– 也可以解引用拿到指向的内容 6.1 运算符重载[ ] 它可以让我们像使用数组一样 随机访问string类对象中的字符 比如: string str (Test string);for (int i0; istr.size(); i){cout str[i];}并且string类会检查[]是否越界 string不喜欢用迭代器,因为[]更好用vector也不喜欢用迭代器,[]更好用list不能用[],因为它不支持随机访问 6.2 反向迭代器和范围for 反向迭代器: reverse_iterator 顾名思义是倒着走的迭代器 和反向迭代器相对应的是 rbegin和rend函数 使用方法: string s(abcdefg); string::reverse_iterator rit s.rbegin(); while(rit ! s.rend()) {cout*rit;rit; }rit是往前走,会打印gfedcba 支持了迭代器后就可以使用范围for遍历: string str(abcdefg); for(auto ch : str) {coutch; }7. string类对象的修改操作 首先,npos是int的最大值 append不常用,很常用! push_back使用: string str(abcde); str.push_back(f); str.push_back(g); //str现在是:abcdefg接口函数:operator 此函数可以一个字符或一个字符串 甚至是一个string类对象: string tmp(hij); string str(abc); strd; strefg; strtmp; //str现在为:abcdefghij7.1 c_str和find函数 c_str函数返回字符串从\0结尾的字符串 但是c中的字符串不一定以\0结尾 c中字符串类以size为准来结尾 所以它叫:c_str,是c语言的规则 下面这段代码可以自己理解一下: string filename(test.cpp); cout filename endl; cout filename.c_str() endl;filename \0; filename string.cpp; cout filename endl; // string 对象size为准 cout filename.c_str() endl; // 常量字符串对象\0 find函数比较简单 大家阅读文档就应该知道这是啥意思 8. insert和erase函数 insert函数可以在pos位置插入 一个字符或者一个字符串或者 一个string类,甚至还可以指定插入 字符串的长度,接口很多,需要自己理解 erase函数可以删除从pos位置 往后len个字符,若erase函数全用 缺省参数,则从0位置删除npos个 也就是将字符全部删除完 甚至可以删除一段迭代器区间 9. 总结以及拓展 string类需要我们单独拿出来学习 这是因为STL库函数中很多接口 都是相似的,学习了string后 会对vector和list等等容器的学习有帮助 vector的接口函数: 不能说和string一模一样 只能说和string完全相同 大家有兴趣可以自行去搜vector和list 拓展题目以及阅读 学完string后可以尝试做一下简单题: 反转字符 唯一出现的字符 最后一个单词的长度 字符是否回文 拓展阅读 string类的operator/ operator/ getline 下期预告:vector的接口函数
http://www.dnsts.com.cn/news/28089.html

相关文章:

  • ssh精品课程网站开发个人博客网站
  • 网站建设前准备工作公司被其它人拿来做网站
  • 电影网站制作模版室内设计网站知乎
  • 怎样让自己做的网站被百度收录意大利设计网站
  • 福州做网站互联网公司有哪些做网站的技术
  • 北京网站设计公司排名软件开发培训技术学校
  • 湖南网站建设平台淘宝联盟优惠券网站建设
  • 域名之后怎么做网站文化传播有限公司网站建设
  • html做校园网站网站建设在线推广
  • 北京网站排名公司企业高端wordpress主题
  • 景观设计公司排名前十强seo网站技术培训
  • 电子商务网站开发时间进度表太原网站建设ty556
  • 昆明网站优化建设wordpress logo指定连接
  • 网站开发用什么编程数字logo创意设计
  • 在360上做网站怎么样wordpress搭建电商
  • 腾讯云建站流程wordpress男性模板
  • 唐山做网站价格wordpress 耗内存
  • 宁国做网站网站权重6了该则么做优化方案
  • 展示类网站管理员搜索引擎营销的优势
  • 全球最热门网站五种关键词优化工具
  • 企业网站主页设计图南宁网络推广
  • 在哪个网站找婚照公司网站代理维护
  • 网站转化率低的原因专门教做西餐的网站
  • 网站如何屏蔽ip段凡科网免费建站
  • php做网站如何配置域名的重庆便宜网站建设
  • 唐山网站建设托管林芝企业网站建设公司
  • 微信制作网站开发专业团队值得信赖
  • 用vs做网站教程企业网站 免费
  • 手机做网站哪家好网站主机多少钱
  • 网站 用什么语言论述网站建设及运营流程