C/C++程序基础 (十一)标准模板库
- 标准模板库

- 标准模板库在标准函数库的定位
- 迭代器(类似指针)保证算法(常用算法)和容器(数据结构)的结合。
- vector的实现
- 底层实现是动态数组,所以支持随机访问。
- 内部是动态数组,随着insert和push_back插入元素而自动扩容(类似realloc),一般扩充为原来的2倍。
- erase操作删除某个迭代器(vector<T>::iiterator)指向的元素,并将迭代器前移。
- size()和capacity()区别:前者是元素数量,后者是内存大小。
- vector<T>:: size_type -> allocator<T>::size_type -> allocator<T>::_SIZE -> size_t -> unsigned int
- list和vector区别
- vector为连续内存空间,支持随机存取,但capacity调整开销大。
- list为不连续空间,不支持随机存取,但插入、删除更方便。
- deque和vector的区别
- deque为双向队列,连续内存空间,支持随机存取。有pop_front()和push_front()操作,适用于首位两端进行插入、删除操作。
- vector支持预先设置capacity。reserve()方法调整内存空间,一定程度上提高了大量增加数据时的效率。
- queue和stack区别
- stack:后进先出,容器适配器。默认使用deque
- queue:先进先出,容器适配器。默认使用deque
- set和map
- set:Key和value值相同,聚合(associative)容器,通过key访问,内部有序。
- map:key和value值(通过pair的first和second区分)可以不同,聚合(associative)容器,通过key访问,内部有序。
- 实现:均为平衡二叉树,具体是红黑树。
- map和hashmap区别
- map:红黑树。key有序。
- hashmap:哈希表(vector保存桶,list处理溢出【有序】)。存取操作复杂度为1。
- 补充:哈希表(hash函数直接定址,解决冲突):通过初始容量和加载因子(0.75)
- 智能指针auto_ptr
- 引用计数:随着复制构造而递增引用。随着赋值操作,递减左值,递增右值。析构时,递减引用。
- 引用计数为0时,删除基础对象。
- 重载->和*操作符。
- 使用限制(一个对象一个智能指针【便于管理】,不可以按值传递,不支持数组)
- 函数对象
- 重载了()的对象,可以像函数一样使用。
- bind1st和bind2nd用于把二元函数对象转化为一元函数,前者固定第一个参数,后者固定第二个。
C/C++程序基础 (十一)标准模板库的更多相关文章
- 【转】C++标准库和标准模板库
C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费 ...
- C++标准库和标准模板库
转自原文http://blog.csdn.net/sxhelijian/article/details/7552499 C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标 ...
- STL(标准模板库)理论基础,容器,迭代器,算法
基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. ...
- C++标准库和标准模板库(转)
转自原文http://blog.csdn.net/sxhelijian/article/details/7552499 C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标 ...
- STL(标准模板库)基本概念
一.什么是STL STL(Standard Template Library,标准模板库)的从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器),容器 ...
- C/C++之标准库和标准模板库
C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完 成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花 ...
- C++标准模板库(STL)和容器
1.什么是标准模板库(STL)? (1)C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板 ...
- C++ 标准库和标准模板库(STL)
转自原文http://blog.csdn.net/sxhelijian/article/details/7552499 一.C++标准库 C++标准库的内容分为10类,分别是(建议在阅读中,将你已经用 ...
- 标准模板库(STL)学习指南之sort排序
对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思 ...
随机推荐
- 关于Vim 的插件snipmate 以及它的安装方式
在网上看了http://study.163.com/course/courseMain.htm?courseId=269016#/courseMain 里关于snipmate 的视频 snipma ...
- rake 任务参数传递问题解决
原文 : https://robots.thoughtbot.com/how-to-use-arguments-in-a-rake-task namespace :tweets do desc 'S ...
- VMware 虚拟机(linux)增加根目录磁盘空间
VMware 虚拟机(linux)增加根目录磁盘空间 今天查看学校的监控报修系统,不能访问了!!!系统运行很慢,用top命令查看发现内存使用率90%,用"df -h ”查看“/”目录 ...
- php字符串函数详解
nl2br 功能:化换行符为<br> <?php $str = "cat isn't \n dog"; $result = nl2br($str); echo $ ...
- Linux安装phpMyAdmin配置管理多个数据库
1.下载 :phpMyAdmin 2.解压安装包: tar -zxvf phpMyAdmin-4.6.5.2-all-languages.tar.gz 3.替换目录 : mv phpMyAdmin-4 ...
- winfrom C#树勾选等
AfterCheck /// <summary> /// 树勾选 /// </summary> /// <param name="sender"> ...
- CentOS 使用RPM方式安装MySQL5.6
转载自:http://blog.csdn.net/liumm0000/article/details/18841197 RPM方式安装MySQL5.6 a. 检查MySQL及相关RPM包,是否安装,如 ...
- php删除服务器所有session踢掉所有在线用户linux
注意:如果要删除服务器上所有session,重启php服务是解决不了问题的,php的session是持久化的. 有效解决办法: 删除 /tmp 下的所有文件(默认php的session文件是在/tmp ...
- sqlmap 命令详解(自备速查)
sqlmap速查 /pentest/database/sqlmap/txt/ common-columns.txt 字段字典 common-outputs.txt common-tables.txt ...
- 微信公众号自动回复_Java
先声明一下,这是一个maven工程pom文件需要的依赖: <dependency> <groupId>dom4j</groupId> <artifactId& ...