C++ 容器
来源:互联网 发布:java中基本数据类型 编辑:程序博客网 时间:2024/06/07 02:38
独创3S法(Six Step Solve)
1.名称
容器
2.概念
在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处,就是“容器类是一种对特定代码重用问题的良好的解决方案。
3.通俗的理解
就相当于一种类,只不过这种类是专为数据的存放以及处理而准备,对数据有其独特的管理方法。
4.存在的意义
以数组作为例子,在定义数组的时候往往需要指定其空间的大小,但如果在使用中用不了这么多或者不够用就会很为难,内存的利用效率就不高,而容器的存在就可以帮你处理这些细节上的问题,你也不会再纠结于定义一个数组时还要考虑多大。容器会自动为你申请内存和释放内存,并同时用自己最优化的算法来进行。
5.使用的方法
举一个小例子看一下,其实发现如果不是特别较真的话,好好阅读MSDN中这些容器的相关元素的函数即可
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector< int > num;
num.push_back( 50 );
num.insert(num.begin(), 10);
num.insert(num.end(), 20);
num.push_back( 60 );
num.push_back( 40 );
cout << num.size() << endl;
for(int i = 0; i < num.size(); i++)
cout << num[i] << " ";
cout << endl;
num.erase(num.begin());
cout << num.size() << endl;
for(int i = 0; i < num.size(); i++)
cout<< num[i] <<" ";
cout << endl;
return 0;
}
#include <vector>
using namespace std;
int main()
{
vector< int > num;
num.push_back( 50 );
num.insert(num.begin(), 10);
num.insert(num.end(), 20);
num.push_back( 60 );
num.push_back( 40 );
cout << num.size() << endl;
for(int i = 0; i < num.size(); i++)
cout << num[i] << " ";
cout << endl;
num.erase(num.begin());
cout << num.size() << endl;
for(int i = 0; i < num.size(); i++)
cout<< num[i] <<" ";
cout << endl;
return 0;
}
6.需要注意的问题
标准容器类
说明
顺序性容器
vector
从后面快速的插入与删除,直接访问任何元素
deque
从前面或后面快速的插入与删除,直接访问任何元素
list
双链表,从任何地方快速插入与删除
关联容器
set
快速查找,不允许重复值
multiset
快速查找,允许重复值
map
一对多映射,基于关键字快速查找,不允许重复值
multimap
一对多映射,基于关键字快速查找,允许重复值
容器适配器
stack
后进先出
queue
先进先出
priority_queue
最高优先级元素总是第一个出列
0 0
- C++--容器
- 【C/C++】STL容器
- C++STL容器
- C ++ 读书笔记 顺序容器
- C++primer 关联容器
- C++STL容器简介
- 《C++primer》 顺序容器
- 《C++primer》关联容器
- c++stack容器介绍
- c++queue容器介绍
- c++map容器介绍
- C++MAP关联容器
- C++map容器类
- C++pair容器
- c++queue容器介绍
- C++Primer 顺序容器
- c++stack容器介绍
- C++_STL 各种容器
- 第六次CCF计算机软件能力认证考试题解(Java)--201512--数位之和--100分通过
- Hadoop 2.7.2 源码导入eclipse
- JavaScript知识结构
- 集合框架之泛型
- 找不到或无法加载主类sun.tools.jps.jps
- C++ 容器
- JAVA之HashMap源码分析
- 自定义JSON.stringify方法,兼容老版本浏览器
- leetcode 187. Repeated DNA Sequences
- NY187快速查找素数
- HRBUST 2044 方方正的棋盘
- mina 使用线程池例子及socket并发测试
- 解决Spring Boot OTS parsing error: Failed to convert WOFF 2.0
- Android开发环境笔记