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

专业做网站的公司有山东新闻今天最新消息

专业做网站的公司有,山东新闻今天最新消息,外贸建站服务,研发外包STL 的组成部分是个重要的部分#xff0c;先回忆一下 容器#xff0c;迭代器#xff0c;算法#xff08;函数#xff09;#xff0c;分配器#xff08;分配内存#xff09;#xff0c;适配器#xff0c;仿函数 一 容器的分类. vector #xff0c; list#xff0c…STL 的组成部分是个重要的部分先回忆一下 容器迭代器算法函数分配器分配内存适配器仿函数 一 容器的分类. vector listmap 容器是保存数据用于管理一大堆数据。 分为三大类 第一类顺序容器sqquence containers.放进去在哪里这个元素就排在哪里例如array vectordequelistforward_list 第二类关联容器 associative containers 一般都是键值对.特别适合做查找。 关联容器你只能控制插入的数据不能控制插入的位置。 set, map, multiset,multimaphash_set,hash_map 第三类 无序容器 unordered containers C11推出来的。 元素的位置不重要重要的是这个元素是否在这个集合里面。 无序容器实际上也属于一种关联容器。 无序容器里面的元素可能随着 新的元素的增加让原来元素的位置发生变化这是无序容器内部 的算法决定的。 unordered  set/ multiset unordered  map/ multimap 二 容器的说明和应用事项例 array: 是一个顺序容器其实是一个数组大小是固定的刚开始申请的大小是多少就是多少不能扩展。 #include array std::array C文档说明 cpp‎ | container 在标头 array 定义 template     class T,     std::size_t N struct array;(C11 起) std::array 是封装固定大小数组的容器。 此容器是一个聚合类型其语义等同于保有一个 C 风格数组 T[N] 作为其唯一非静态数据成员的结构体。不同于 C 风格数组它不会自动退化成 T* 。它能作为聚合类型聚合初始化只要有至多 N 个能转换成 T 的初始化器 std::arrayint, 3 a {1,2,3}; 。 该结构体结合了 C 风格数组的性能、可访问性与容器的优点比如可获取大小、支持赋值、随机访问迭代器等。 std::array 满足容器 (Container) 和可逆容器 (ReversibleContainer) 的要求除了默认构造的 array 是非空的以及进行交换的复杂度是线性它满足连续容器 (ContiguousContainer) (C17 起)的要求并部分满足序列容器 (SequenceContainer) 的要求。 当其长度为零时 array N 0 有特殊情况。此时 array.begin() array.end() 并拥有某个唯一值。在零长 array 上调用 front() 或 back() 是未定义的。 亦可将 array 当做拥有 N 个同类型元素的元组。 迭代器非法化 按照规则指向 array 的迭代器在 array 的生存期间决不非法化。然而要注意在 swap 时迭代器将继续指向同一 array 的元素并将改变元素的值。 测试验证 #include array//STL array void main() {arraystring, 5 arr {nihao,ilovelovelovelovelovelovelovelove,wang};cout arr.size() endl;//5cout arr.max_size()endl;//5for (int i 0; i arr.size(); i) {cout arr[i] endl;//将arr 数组中的每一个地址打印出来const char *p arr[i].c_str();//将arr中的指向的string转化成 c风格的字符串cout p endl;//打印这些字符串printf( p %p\n,p);//将这些字符串的地址打印出来} } 5 5 012FFAFC nihaop 012FFB00 012FFB18 ilovelovelovelovelovelovelovelovep 017677E0 012FFB34 wangp 012FFB38 012FFB50p 012FFB54 012FFB6Cp 012FFB70 这里涉及到string 在布局问题可以查看 102 C string内存模型分析-CSDN博客 vector 详解 从下图我们就能知道 1.vector 是顺序存储的从vector的末尾加资源或者删除资源都很快。 push_back(); 2.往中间插入元素可能导致很多后续元素都要执行重新构造析构效率会非常的低 3.查找速度不会快. 4.vector容器内存也是挨着的。 5.vector 是可变大小的容器。 6.从4和5可以推断出当存储多个Teacher的时候会有问题发生。 当第一次存储一个Teacher的时候vector只会开出一个容纳 一个 Teacher size的空间。 当第二次存储另一个Teacher的时候vector为了保证内存连续则会重新开辟一个可以容纳2个Teacher的空间大小然后将Teacher1 copy构造过来。然后加上一个Teacher2. 当第三次存储第三个Teacher的时候vector为了保证内存连续则会重新开辟一个可以容纳3个Teacher的空间大小然后将Teacher1 和 Teacher2 copy构造过来。然后加上一个Teacher3 7.怎么改良这个呢 vector虽然好用但是从上述能看出来这玩意是因为每次都搞一个空间导致Teacher 类的构造函数copy 构造函数析构函数会被频繁的调用这很影响效率。实际上由于代码是我们自己写的在某些情况下我们很容易知道大概这个vector会容纳多少个Teacher因此可以在开始的时候通过 vector. 问题发生时的代码 void main() {vectorTeacher6 vec;for (int i 0; i 5; i) {cout start i i endl;vec.push_back(Teacher6(i));//start i 0// Teacher6 gouzao mage 0 this 0093F6D8 //先构造 Teacher6(0)// Teacher6 copy gouzao this 00E02680 obj 0093F6D8//然后将Teacher6(i)通过copy 构造 copy 给 vector中// Teacher6 xigou this 0093F6D8 //然后将Teacher6(0) 析构// start i 1// Teacher6 gouzao mage 1 this 0093F6D8//先构造 Teacher6(1)// Teacher6 copy gouzao this 00E00D84 obj 0093F6D8//然后将Teacher6(i)通过copy 构造 copy 给 vecto// Teacher6 copy gouzao this 00E00D80 obj 00E02680 //将vector 中的第一个元素通过 copy 构造到新的位置上// Teacher6 xigou this 00E02680 //将之前的vector中的元素析构// Teacher6 xigou this 0093F6D8 //把 Teacher6(1)析构了// start i 2// Teacher6 gouzao mage 2 this 0093F6D8// Teacher6 copy gouzao this 00E00B20 obj 0093F6D8// Teacher6 copy gouzao this 00E00B18 obj 00E00D80// Teacher6 copy gouzao this 00E00B1C obj 00E00D84// Teacher6 xigou this 00E00D80// Teacher6 xigou this 00E00D84// Teacher6 xigou this 0093F6D8// start i 3// Teacher6 gouzao mage 3 this 0093F6D8// Teacher6 copy gouzao this 00DF6E24 obj 0093F6D8// Teacher6 copy gouzao this 00DF6E18 obj 00E00B18// Teacher6 copy gouzao this 00DF6E1C obj 00E00B1C// Teacher6 copy gouzao this 00DF6E20 obj 00E00B20// Teacher6 xigou this 00E00B18// Teacher6 xigou this 00E00B1C// Teacher6 xigou this 00E00B20// Teacher6 xigou this 0093F6D8// start i 4// Teacher6 gouzao mage 4 this 0093F6D8// Teacher6 copy gouzao this 00E02B40 obj 0093F6D8// Teacher6 copy gouzao this 00E02B30 obj 00DF6E18// Teacher6 copy gouzao this 00E02B34 obj 00DF6E1C// Teacher6 copy gouzao this 00E02B38 obj 00DF6E20// Teacher6 copy gouzao this 00E02B3C obj 00DF6E24// Teacher6 xigou this 00DF6E18// Teacher6 xigou this 00DF6E1C// Teacher6 xigou this 00DF6E20// Teacher6 xigou this 00DF6E24// Teacher6 xigou this 0093F6D8// Teacher6 xigou this 00E02B30// Teacher6 xigou this 00E02B34// Teacher6 xigou this 00E02B38// Teacher6 xigou this 00E02B3C// Teacher6 xigou this 00E02B40} } 改动后的代码 void main() {vectorTeacher6 vec;cout vec.capacity() endl;cout vec.size() endl;vec.reserve(10);cout vec.capacity() endl;cout vec.size() endl;for (int i 0; i 5; i) {cout start i i endl;vec.push_back(Teacher6(i));}// 0// 0// 10// 0// start i 0// Teacher6 gouzao mage 0 this 00D9F8D0// Teacher6 copy gouzao this 014B6E18 obj 00D9F8D0// Teacher6 xigou this 00D9F8D0// start i 1// Teacher6 gouzao mage 1 this 00D9F8D0// Teacher6 copy gouzao this 014B6E1C obj 00D9F8D0// Teacher6 xigou this 00D9F8D0// start i 2// Teacher6 gouzao mage 2 this 00D9F8D0// Teacher6 copy gouzao this 014B6E20 obj 00D9F8D0// Teacher6 xigou this 00D9F8D0// start i 3// Teacher6 gouzao mage 3 this 00D9F8D0// Teacher6 copy gouzao this 014B6E24 obj 00D9F8D0// Teacher6 xigou this 00D9F8D0// start i 4// Teacher6 gouzao mage 4 this 00D9F8D0// Teacher6 copy gouzao this 014B6E28 obj 00D9F8D0// Teacher6 xigou this 00D9F8D0// Teacher6 xigou this 014B6E18// Teacher6 xigou this 014B6E1C// Teacher6 xigou this 014B6E20// Teacher6 xigou this 014B6E24// Teacher6 xigou this 014B6E28 } 特别注意的是vector 的不恰当使用会造成效率很低使用时要非常小心
http://www.pierceye.com/news/416553/

相关文章:

  • 增加网站关键词库中国建设银行黄陂支行网站
  • 企业网络优化湖北seo整站优化
  • 二百块做网站深圳网约车租赁公司哪家好
  • 软文500字范文WordPress博客程序优化
  • 企业网站内容如何备案建博会广州网站
  • 加工平台苏州纳米所海南seo排名
  • 个人适合做什么网站上海做网站建设的公司
  • 常见c2c网站有哪些网络文化经营许可证申请条件
  • 深圳龙华汽车网站建设移动页面
  • 陈巴尔虎旗网站建设重庆哪些网站推广公司
  • 网站做熊掌号码网站没被收录怎么办
  • 淘宝京东网站建设目的网站标题写什么作用
  • 棋牌网站开发工程师什么是营销网站建设
  • 邢台网站制作地址拿网站的文章做外链
  • 怎么样做钓鱼网站怎么建网站app
  • 高校财务网站建设国外网站ip地址
  • 重要的龙岗网站建设影视公司网站模板
  • 品牌网站 响应式网站wordpress oss静态
  • 免费网站制作中小型企业查询网址
  • 企业网站的seo广州市企业网站建设平台
  • 备案网站名称与实际网站名称不一致企业门户网站平台建设招标采购文件
  • 张掖网站制作wordpress 主题安装教程
  • 企业网站建设合作合同网页做成app
  • 郑州建网站价格医院网页
  • 南京设计网站网站速度的重要性
  • 河南智能网站建设平台简易网站建设
  • 成都鱼羊环保网站制作设计网站 关键字 标签
  • 邓修明调研成都网站建设鞍山建一个网站大概要多少钱
  • 聊城网站开发公司专业开发小程序公司
  • 三门峡网站建设推广用个人电脑做服务器建网站