标准模板库使用参考——vector向量容器
C++的STL从广义上讲分为algorithm(算法),container(容器)和iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。
在C++标准库中,STL被组织成为下面的13个头文件:<algorithm>, <deque>, <functional>, <iterator>, <vector>, <list>, <map>, <memory>, <numeric>, <queue>, <set>, <stack>和 <utility>
1,vector向量容器
vector是一种简单高效的容器,在尾端插入何删除元素,算法时间复杂度为O(1),其他元素插入和删除为O(n)。vector可动态调整所占用的内存空间。
用数组方式访问vector元素的参考代码如下图所示:
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std; int main()
{
vector<int> v;
v.push_back(); //尾端插入新元素
v.push_back();
v.push_back(); for(int i = ; i < v.size(); i++)
cout<<v[i]<<' '; getchar(); return ;
}
运行结果

#include<iostream>
#include<cstdio>
#include<vector> using namespace std; int main()
{
int j; vector<int> v; v.push_back(); //尾端插入新元素
v.push_back();
//v.clear(); //全部清空元素
v.push_back();
v.insert(v.begin()+, ); //插入9在第二个后面
v.insert(v.begin(), ); //插入5为首元素
v.insert(v.end(), ); //插入12为末元素
v.erase(v.begin()+); //删除第二个元素
v.erase(v.begin(), v.begin()+); //删除前三个元素 vector<int>::iterator i; //迭代器相当于游标 for(i = v.begin(), j = ; i != v.end(); i++, j++)
cout<<"v["<<j<<"]="<<*i<<endl; swap(v[], v[]); for(i = v.begin(), j = ; i != v.end(); i++, j++)
cout<<"v["<<j<<"]="<<*i<<endl; cout<<v.empty()<<endl; //判断是否为空
cout<<v.size()<<endl; //元素实际个数
cout<<v.max_size()<<endl; //可容纳的最大元素个数
cout<<v.capacity()<<endl; //当前可容纳的vector元素个数
cout<<v.front()<<endl; //首元素引用
cout<<v.back()<<endl; //末尾元素引用
v.pop_back(); //删除末尾元素 v.reserve(); //调整数据空间大小
cout<<v.capacity()<<endl; vector<int>::reverse_iterator ri; //反响迭代器
for(ri = v.rbegin(); ri != v.rend(); ri++) //首尾反向
cout<<*ri<<" "; getchar(); return ;
}
运行结果

结构体容器参考代码如下
#include<iostream>
#include<cstdio>
#include<vector> using namespace std; struct stu
{
int x;
int y;
}; int main()
{
int j;
vector<stu> v1; //结构体容器
vector<stu> v2; struct stu a = {, };
struct stu b = {, };
struct stu c = {, }; v1.push_back(a);
v1.push_back(b);
v1.push_back(c);
v2.push_back(c);
v2.push_back(b);
v2.push_back(a); cout<<"v1:\n"; for( int i = ; i < v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl; cout<<"v2:\n"; for(int i = ; i < v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl; swap(v1, v2); cout<<"v1:\n"; for(int i = ; i <v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl; cout<<"v2:\n"; for(int i = ; i < v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl; getchar(); return ;
}
运行结果:

标准模板库使用参考——vector向量容器的更多相关文章
- C++标准模板库(STL)和容器
1.什么是标准模板库(STL)? (1)C++标准模板库与C++标准库的关系 C++标准模板库其实属于C++标准库的一部分,C++标准模板库主要是定义了标准模板的定义与声明,而这些模板主要都是 类模板 ...
- C++标准模板库STL算法与自适应容器(栈和队列)
参考<21天学通C++>第23与第24章节,对STL算法与自适应容器进行介绍. 实际上在前面的STL顺序容器.关联容器进行介绍时或多或少引用到了一些STL算法中的模板函数.而自适应容器是在 ...
- 7.4 C++标准模板库(STL)的概念
参考:http://www.weixueyuan.net/view/6401.html 总结: 标准模板库为C++提供了完善的数据结构及算法. 标准模板库包括三部分:容器.算法和迭代器. 容器是对象 ...
- C++-标准模板库
C++较之C语言强大的功能之一是,C++编译器自带了大量的可复用代码库,我们称为标准模板库(standard template library),STL.标准模板库是一套常用的数据结构的集合,包括链表 ...
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- STL(标准模板库)理论基础,容器,迭代器,算法
基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间. ...
- C++标准模板库(STL)之Vector
在C中,有很多东西需要自己实现.C++提供了标准模板库(Standard Template Libray,STL),其中封装了很多容器,不需要费力去实现它们的细节而直接调用函数来实现功能. 具体容器链 ...
- C++ 标准模板库(STL)——容器(Containers)的用法及理解
C++ 标准模板库(STL)中定义了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量(vector).队列(queue).栈(stack).set.map等.这次主要 ...
- 8、泛型程序设计与c++标准模板库2、c++标准模板库中的容器
顺序容器类以逻辑线性排列方式存储元素,在这些容器类型中的元素在逻辑上被认为是连续的存储空间中存储的.顺序容器可用于存储线性群体. 在关联容器类中,元素的存储和检索基于关键字和元素与其他元素之间的关系, ...
随机推荐
- JS中有几种数据类型分别是哪几种
number,string,boolean,null,undefined,object
- Java微信公众平台开发(九)--关键字回复以及客服接口实现(该公众号暂时无法提供服务解决方案)
转自:http://www.cuiyongzhi.com/post/47.html 我们在微信公众号的后台可以发现微信给我们制定了两种模式,一种是开发者模式(也就是我们一直在做的开发),还有一种模式是 ...
- 1.forEach():遍历数组,并为每个元素调用传入的函数; 举例:
var a = [1,2,3]; var sum = 0; //传一个参数 a.forEach(function(v){ sum += v; }); console.log(sum);//6 //传三 ...
- 关于苹果safari浏览器登陆时Cookie无法保存的问题
前段时间,修改了登录处理后给到客户端浏览器Cookie的内容,新增了一个姓名的value,发现safari不能保存该Cookie的内容,同时Chrome.firefox.ie等浏览器都能正常的访问,直 ...
- Bypassing iPhone Code Signatures
[Bypassing iPhone Code Signatures] Starting with the recent beta releases of the iPhoneOS, Apple has ...
- Gym - 101128H:Sheldon Numbers
题意 给你两个整数X和Y 问你在区间[X,Y]中,有多少数字的二进制满足ABAB或者A这种形式.A是某个数量的1,B是某个数量的0. 分析 因为数据规模很大,直接枚举x和y之间的数字然后判断会超时.所 ...
- libevent源码深度剖析十
libevent源码深度剖析十 ——支持I/O多路复用技术 张亮 Libevent的核心是事件驱动.同步非阻塞,为了达到这一目标,必须采用系统提供的I/O多路复用技术,而这些在Windows.Linu ...
- Python父类调用子类
首先说明,上面的标题其实是不正确的,Python是一门解释型.动态数据类型的高级语言,运行时,动态判断调用对象,其实还是子类自己在调用自己的方法或属性. 举个例子(copy过来的):SocketSer ...
- Python3.7安装Django
一.系统环境 操作系统:Win7 64位 Python版本:3.7 二.安装参考 Django的下载网址:https://www.djangoproject.com/download/ 当前最新版本: ...
- js颜色拾取器
几年前,很难找到一个合适的颜色选择器.正好看到很多不错的JavaScript颜色选择器插件,故而把这些编译汇总.在本文,Web设计师和开发人员 Kevin Liew 选取了11个相应插件,有些会比较复 ...