1 / 8
文档名称:

C STL笔试题java笔试题.docx

格式:docx   大小:19KB   页数:8页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C STL笔试题java笔试题.docx

上传人:业精于勤 2021/4/22 文件大小:19 KB

下载得到文件列表

C STL笔试题java笔试题.docx

相关文档

文档介绍

文档介绍:C++STL笔试题java笔试题

  STL(StandardTemplateLibrary,标准模板库),STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),并包含部分工具类如auto_ptr。几乎全部的代码全部采取了模板类和模板函数的方法,这相比于传统的由函数和类组成的库来说提供了更加好的代码重用机会。下面就由X为大家介绍一下C++STL笔试题的文章。
  C++STL笔试题篇1
  ++STL之因此得到广泛的赞誉,也被大家使用,不只是提供了像vector,string,list等方便的容器,更主要的是STL封装了很多复杂的数据结构算法和大量常见数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等
  ,multiset,map,multimap内部采取的就是一个很高效的平衡检索二叉树:红黑树,也成为RB树(Red-BlackTree)。RB树的统计性能要好于通常的平衡二叉树
  map和set的使用虽不复杂,但也有部分不易了解的地方,如:
  map:typepair,很多不一样的constKey对应的T对象的一个集合,全部的统计集中只要constKey不一样就能够,T无关!
  set:,没有map的T对像!能够看成map的一个特例
  (1)为何map和set的插入删除效率比用其它序列容器高?,树
  答:因为对于关联容器来说,不需要做内存拷贝和内存移动。说对了,确实如此。map和set容器内全部元素全部是以节点的方法来存放,其节点结构和链表差不多,指向父节点和子节点
  (2)为何每次insert以后,以前保留的iterator不会失效?
  答:iterator这里就相当于指向节点的指针,内存没有变,指向内存的指针怎么会失效呢(当然被删除的那个元素本身已经失效了)。相对于vector来说,每一次删除和插入,指针全部有可能失效,调用push_back在尾部插入也是如此。因为为了确保内部数据的连续存放,iterator指向的那块内存在删除和插入过程中可能已经被其它内存覆盖或内存已经被释放了。即使时push_back的时候,容器内部空间可能不够,需要一块新的更大的内存,只有把以前的内存释放,申请新的更大的内存,复制已经有的数据元素到新的内存,最终把需要插入的元素放到最终,那么以前的内存指针自然就不可用了。尤其时在和find等算法在一起使用的时候,切记这个标准:不要使用过期的iterator。
  (3)为何map和set不能像vector一样有个reserve函数来预分配数据?
  答:我以前也这么问,究其原理来说时,引发它的原因在于在map和set内部存放的已经不是元素本身了,而是包含元素的节点。也就是说map内部使用的Alloc并不是map申明的时候从参数中传入的Alloc。比如:
  ,multiset
  set和multiset会依据特定的排序准则自动将元素排序,set中元素不许可反复,multiset能够反复。
  因为是排序的,因此set中的元素不能被修改,只能删除后再添加。
  向set中添加的元素类型