标准模板库使用参考——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++标准模板库中的容器
顺序容器类以逻辑线性排列方式存储元素,在这些容器类型中的元素在逻辑上被认为是连续的存储空间中存储的.顺序容器可用于存储线性群体. 在关联容器类中,元素的存储和检索基于关键字和元素与其他元素之间的关系, ...
随机推荐
- 根文件系统的构建与分析(四)之瑞士军刀busybox生成系统基本命令
根文件系统的构建与分析(四) 转载请注明 http://blog.csdn.net/jianchi88 Author:Lotte 邮箱:baihaowen08@126.com ls /bin, ...
- HTTP 与TCP/IP 、Socket区别(一)
网络由下往上分为: 物理层-- 数据链路层-- 网络层-- IP协议 传输层-- TCP协议 会话层-- 表示层和应用层-- HTTP协议 1.TCP/IP连接 手机能够使用联网功能是因为手机底层实现 ...
- STM32使用无源蜂鸣器演奏歌曲
上一次使用了有源蜂鸣器,只能发出固定的”滴滴“声,当然不能满足于此呀.使用无源蜂鸣器,只要输出不同频率的PWM波,即可发出不同的音符. 不同的音符组合起来就是一个曲子了. 改变PWM的音调,可以输出D ...
- Iterator(迭代器)的一般用法 (转)
迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的I ...
- Uboot详细解析1
uboot 详细注释讲解 声明:该贴是通过参考其他人的帖子整理出来,从中我加深了对uboot的理解,我知道对其他人一定也是有很大的帮助,不敢私藏,如果里面的注释有什么错误请给我回复,我再加以修改.有些 ...
- 【HDU5857】Median
题意 给出一个长度为n的有序序列.给出m个询问,每个询问包括四个正整数l1,r1,l2,r2你用l1tor1的和l2tor2的元素来组成一个新的序列,然后找出这个序列的中位数. 分析 这是当时Spri ...
- libevent源码深度剖析十二
libevent源码深度剖析十二 ——让libevent支持多线程 张亮 Libevent本身不是多线程安全的,在多核的时代,如何能充分利用CPU的能力呢,这一节来说说如何在多线程环境中使用libev ...
- Junit问题01 利用 @Autowired 注入失效问题
1 利用 @Autowired 注入失效问题 1.1 问题描述 在使用Junit作为测试框架的单元测试中,直接了用@Autowired记性依赖注入时总是注入失败 1.2 问题原因 在测试类中没有设定上 ...
- 2-javascript::笔记
0.位置: HTML 中的脚本必须位于 <script> 与 </script> 标签之间. 脚本可被放置在 HTML 页面的 <body> 和 <head& ...
- CSS文本溢出处理
1.超出层的高度和宽度时文本自动隐藏 overflow:hidden;text-overflow:ellipsis; 2.超出层的宽度时隐藏溢出的文本以...表示,Firefox不兼容,只隐藏溢出的文 ...