C++ STL的基本基本原理

STL都是在内存的堆区分配的,但是其析构也是STL帮我们做好的,不用手动去delete。

1.vector

  逻辑地址连续的一片内存空间,当空间不足,重新申请新的地址空间,将原有的数据复制过去,而新的地址空间的大小C++没有规定,依赖于编译器的实现。在VC++中是原来的1.5倍,而g++中则是原来的2倍。

  关于这一点可以从简单的实验来验证,vector的capacity成员函数返回vector实际申请的空间大小,可以通过不断向vector中插入100个数据,观察capacity的大小变化情况来判断数据的整张情况。代码如下:

#include<iostream>
#include<vector>
using namespace std;
int main() {vector<int> vec;for (int i = 0; i<100; i++) {vec.push_back(i);cout << "capacity is " << vec.capacity() << endl;}
}

下图左右分别是在VS2015和g++ 4.8的运行结果图,可以发现证实了我们之前的说法:当内存空间不足时新分配的内存空间在VC++下是原来的1.5倍,在g++下是原来的2倍。

 

 

 

2.map

  底层红黑树,有较快的查找插入删除速度,均为O(lgn)时间复杂度。另外红黑树结构决定了其不能同时插入两个key值一样的节点,而是会被直接丢弃掉,也就是插不进去。这一点可以从其是平衡二叉树的性质看出来。

转载于:https://www.cnblogs.com/shenshenlei/p/5528426.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IE9不支持CSS line-height的文字垂直居中解决方法

IE9不支持line-height原因&#xff1a;中文ie9不支持英文字体 相信大家在IE9看见自己使用line-height设置垂直居中文字不能垂直居中&#xff0c;这是与你设置字体有关&#xff0c;通常大家习惯设置font-family:Arial, Helvetica, sans-serif; ie9中line-height失效解决方法&…

iOS 修改项目名称

2019独角兽企业重金招聘Python工程师标准>>> 1. [代码]iOS 修改项目名称 1 2. [图片] 1.png 3. [图片] 2.png 4. [图片] 3.png 5. [图片] 4.png 6. [图片] 5.png 转载于:https://my.oschina.net/5951008876/blog/681857

java wait源码_Java精通并发-透过openjdk源码分析wait与notify方法的本地实现

上一次https://www.cnblogs.com/webor2006/p/11442551.html中通过openjdk从c的底层来审视了ObjectMonitor的底层实现&#xff0c;这次继续来探究底层&#xff0c;对于wait()和notify()的底层细节到底是啥样的呢&#xff1f;下面还是先来到openjdk中来打开ObjectMonitor.hpp&…

jquery实现多级下拉菜单

支持多种浏览器&#xff0c;体验效果&#xff1a;http://keleyi.com/keleyi/phtml/jqmenu/4.htm多级菜单&#xff0c;理论上支持无限多的层级&#xff0c;文件结构非常简单的&#xff0c;以下是完整代码&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T…

listActivity和ExpandableListActivity的简单用法

今天自己简单的总结了listActivity和ExpandableListActivity二者的简单用法。 首先&#xff0c;先说一下listActivity的用法&#xff1a; ListActivity是一个绑定到一个数据源&#xff0c;并且用来显示这一串数据的Activity。ListActivity拥有一个listview对象来实现数据源的绑…

搭建git for windows服务器(100%可以成功)【转】

转自&#xff1a;http://blog.csdn.net/code_style/article/details/38764203 既然Git在linux下面非常好用&#xff0c;为什么还要搭建git windows的服务器&#xff0c;因为不是所有的用户都需要在linux下面做开发&#xff0c;对吧&#xff0c;还有很多用户选择使用windows做开…

eclipser认java源码_java相关:Eclipse查看开发包jar里源代码的方法

java相关&#xff1a;Eclipse查看开发包jar里源代码的方法发布于 2020-5-21|复制链接摘记: Eclipse查看开发包jar里源代码的方法前言&#xff1a;最近我打算学习一下谷歌的类库Guava&#xff0c;下载了Guava-r09.jar包及其源码&#xff0c;为了可以方面的看其源码&#xff0c;我…

php归档函数(按时间)实现

今日开发本站需要用到按时间归档文章的功能&#xff0c;即按文档发布时间将文章文类&#xff0c;以实现检索和统计功能&#xff0c;于是自己写了一个&#xff0c; 现分享给大家&#xff0c;相信大家工作和学习中有可能会用到&#xff0c;实现原理很简单&#xff0c;即取出文章发…

【转】高性能WEB开发系列之重绘与回流

原文转载&#xff1a;http://www.cnblogs.com/wangzhichao/archive/2011/05/16/2047633.html页面呈现流程 在讨论页面重绘、回流之前。需要对页面的呈现流程有些了解&#xff0c;页面是怎么把html结合css等显示到浏览器上的&#xff0c;下面的流程图显示了浏览器对页面的呈现的…

java字符串颠倒位置_java字符串第一个字符与最后一个字符颠倒位置测试

最近做了一个需求&#xff0c;就是 通过OA 连接到我们系统&#xff0c;然后request里 带有base64加密后的字符串&#xff0c;并且第一个与最后一个位置颠倒了&#xff0c;所以需要先恢复正常的加密串&#xff0c;然后在解密。所以首先工作是 先测试还原加密串&#xff0c;就是第…

C#自定义特性实例

元数据,就是C#中封装的一些类,无法修改.类成员的特性被称为元数据中的注释. 1、什么是特性 &#xff08;1&#xff09;属性与特性的区别 属性(Property)&#xff1a;属性是面向对象思想里所说的封装在类里面的数据字段&#xff0c;Get&#xff0c;Set方法。 特性(Attribute): …

UVA 10054 the necklace 欧拉回路

有n个珠子&#xff0c;每颗珠子有左右两边两种颜色&#xff0c;颜色有1~50种&#xff0c;问你能不能把这些珠子按照相接的地方颜色相同串成一个环。 可以认为有50个点&#xff0c;用n条边它们相连&#xff0c;问你能不能找出包含所有边的欧拉回路 首先判断是否在一个联通分量中…

解决tsvncache.exe引起电脑慢的问题

如果你觉得SVN的cache程序使得你的机器反应很慢的话,那可以参考这个方案.不过可能要改变你以前使用习惯.这个方案有两部分,第一部分是关闭SVN的cache监视;第二部分是显示文件差异时,使用SVN的“check for modifications”显示差异。 1.关闭SVN的cache监视。即关闭tsvncache.exe…

重构-改善既有代码的设计(1)

1&#xff0c;建立可靠地测试环境 2,寻找要重构的代码&#xff08;函数或者类&#xff09; 一般为比较长的函数&#xff0c;或者逻辑混乱的类 3&#xff0c;重构后的函数要修改局部变量&#xff0c;增加程序的可读行 4&#xff0c;函数应该放在它所使用的数据的所属对象内&…

[数据结构与算法] 单链表的简单demo

Vc6之下编译通过。。 1 /*******************************************************2 * : Project: 单链表数据结构演示3 * : File: link_list.h4 * : Function&#xff1a; 提供单链表操作的数据结构定义及方法声明5 * : History: 2013-10-01 22:37:056 * : Auth…

c++ 17介绍

作者&#xff1a;hearts zh链接&#xff1a;https://www.zhihu.com/question/32222337/answer/55238928来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。其实现在的proposal很多很多&#xff0c;不出意外也会有相当一部分…

HTML5本地存储不完全指南

历史 在HTML5本地存储之前&#xff0c;如果我们想在客户端保存持久化数据&#xff0c;有这么几个选择&#xff1a; HTTP cookie。HTTP cookie的缺点很明显&#xff0c;最多只能存储4KB的数据&#xff0c;每个HTTP请求都会被传送回服务器&#xff0c;明文传输&#xff08;除非你…

php面向对象编程详解,PHP面向对象编程

3.3 类的定义和实例化date_default_timezone_set("PRC");/*** 1. 类的定义以class关键字开始&#xff0c;后面跟着这个类的名称。类的名称命名通常每个单词的第一个字母大写。* 2. 定义类的属性* 3. 定义类的方法* 4. 实例化类的对象* 5. 使用对象的属性和方法*/c…

[Postgres]Postgres复制表

在需要把含有分表的总表备份的时候想到的笨办法&#xff0c;如果有什么更先进的办法万望告知。 比如TableOld是由TableOld1,TableOld2,TableOld3组合而成&#xff0c;现在需要对TableOld进行备份。 复制表带数据 select * into TableNew from TableOld; 复制表结构 select * in…

“高考”机器人横空出世 2017年居然要考“大学”

文/辛东方&#xff0c;80后作家、专栏作者、专注互联网科技领域人工智能的发展&#xff0c;科学技术的全力配合&#xff0c;已经把人类的智慧实实在在的体现到了智能化设备上。按照目前的发展速度&#xff0c;人工智能要想真正突破技术难关&#xff0c;达到进一步的智能化&…