C++顺序容器vector、deque、list
2024-09-27 02:36:46
1、容器元素类型
C++中大多数数据类型能够作为容器的元素类型。容器元素类型必须满足一下两个条件:支持赋值和复制操作。
所以没有元素是引用类型的容器,同一时候IO对象和auto_ptr也不能作为容器的元素类型。
2、vector容器的自增长
vector容器中存储的元素在内存中是连续存储的。假如容器中没有空间容纳新元素。此时因为元素必须连续存储以便索引訪问,所以不能在内存中随便找个地方存储这个新的元素,于是vector必须又一次分配空间。用于存放原来的元素和新加入的元素:存放在旧容器中的元素被拷贝到新的容器中,接着插入新的元素,最后撤销旧的存储空间。为了使vector容器实现高速的内存分配,事实上际分配的容量要比当前所需的空间多一些,vector容器预留这些空间,用于存放新的元素。
list容器中加入元素时。仅仅须要创建一个新的元素。然后将该元素连接到已经存在的链表中。不须要又一次分配存储空间,也不用复制不论什么已存在的元素。
3、vector、deque、list三种容器的特点
vector:支持高速随机訪问、可高效的在vector容器尾部加入删除数据
deque:支持高速随机訪问、可高效的在deque容器头部和尾部加入删除数据
list:支持顺序訪问,可是在不论什么位置插入删除元素都非常快
4、vector容器基本操作
- #include "stdafx.h"
- #include <string>
- #include <iostream>
- #include <vector>
- using namespace std;
- int main(int argc, char* argv[])
- {
- //vector定义并初始化
- vector<int> v1;
- for (int i=0;i<10;i++)
- v1.push_back(i+1);
- //使用迭代器遍历vector
- vector<int>::iterator iter=v1.begin();
- for (;iter!=v1.end();iter++)
- {
- cout<<*iter<<" ";
- }
- cout<<endl;
- return 0;
- }
最新文章
- ECMA中的switch语句
- golang使用 mongo
- Java jstatd详解
- UVA 11800 Determine the Shape --凸包第一题
- cvGet2D的用法
- Chart 点击获取坐标
- Oracle异常处理内容,隐式游标
- matlab数据的导入和导出,以matlab工作区workspace为source和destination
- HashSet 读后感
- 不支持关键字:metadata
- javascript 基础3第13节
- Java 语言中 Enum 类型的使用介绍
- win7程序关闭后弹出 程序兼容性助手 这个程序可能安装不正确 如果此程序没有正确安装,处理方式
- PHP学习建议(来自老手)
- GBK,UTF8是什么?有什么区别,做网站选择哪种好?
- Git分支(3/5) -- 禁用 Fast Forward 合并
- SQL Data Discovery and Classification
- python day21 ——面向对像-反射 getattr,内置方法
- eclipse 启动 闪退
- linux 开机自启动脚本
热门文章
- Tomcat环境的搭建(web基础学习笔记一)
- [Oracle] decode 函数及其用法
- JDK5.0特性,使用ProcessBuilder执行本地命令
- ORA-14402:更新分区关键字列将导致分区更改(分区表注意)
- OpenERP的短信(SMS)接口
- MariaDB初始化和启动故障
- HTTP Header具体解释
- SQL Server 2012 “阻止保存要求又一次创建表”的更改问题的设置方法
- CentOS 7 网络磁盘挂载到本地 并测试传输速度
- java 如何取前32位全是1的int型数据的后八位