标准模板库使用参考——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++标准模板库中的容器
顺序容器类以逻辑线性排列方式存储元素,在这些容器类型中的元素在逻辑上被认为是连续的存储空间中存储的.顺序容器可用于存储线性群体. 在关联容器类中,元素的存储和检索基于关键字和元素与其他元素之间的关系, ...
随机推荐
- Python web框架 flask
Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后 ...
- dd命令的解释
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. if=文件名:输入 ...
- linux 下安装mysql-5.7.16
1.解压tar -xvf mysql的包 tar -xvf mysql-5.7.16-1.el6.x86_64.rpm-bundle.tar(mysql 官网中即可找到) 2.查看是否需要卸载安装时候 ...
- L1,L2范数和正则化 到lasso ridge regression
一.范数 L1.L2这种在机器学习方面叫做正则化,统计学领域的人喊她惩罚项,数学界会喊她范数. L0范数 表示向量xx中非零元素的个数. L1范数 表示向量中非零元素的绝对值之和. L2范数 表 ...
- leetcode690
class Solution { public: int getImportance(vector<Employee*> employees, int id) { ; map<int ...
- OSGI 模块化
推荐教程:https://course.tianmaying.com/osgi-toturial+osgi-concept#15
- Spring 快速入门
1.持久层 (1) 域模型层 (2) Dao 持久层接口 (3) DaoImpl 持久层接口实现 2.业务层 Service 业务接口层 ServiceImpl 业务接口实现 3.展现层 Sp ...
- PHP下的手机号码效验
手机号是否合法有效,基本都是用正则匹配的,所以正则表达式是关键,可以用到java.c#等语言里. /** * 验证手机号是否合法 * * @param string $mobile * 验证的手机号 ...
- java Integer类的缓存(转)
首先看一段代码(使用JDK 5),如下: public class Hello { public static void main(String[] args) { int a = 1000, b = ...
- Redis搭建(五):Cluster集群搭建
一.方案 1. 介绍 redis3.0及以上版本实现,集群中至少应该有奇数个节点,所以至少有三个节点,官方推荐三主三从的配置方式 使用哈希槽的概念,Redis 集群有16384个哈希槽,每个key通过 ...