STL笔记(に)--vector容器
Vector
1.可变长的动态数组
2.需包含头文件#include<vector> (当然,如果用了万能头文件#include<bits/stdc++.h>则可忽略)
3.支持随机访问迭代器:
- 根据下标随机访问某个元素,时间复杂度O(1)
- 在尾部添加速度很快
- 在中间插入慢
4.所有STL算法都能对vector操作。
下面是关于vector使用的代码:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void fun(int &n) //配套for_each输出vector容器
{
cout<<n<<" ";
}
//自己设计比较函数,对元素进行降序排列。
bool cmp(const int &a,const int &b)
{
if(a!=b) return a>b;
}
int main(int argc, char const *argv[])
{
vector<int> v(); //定义一个vector容器
vector<int>::iterator i; //vector<int>::iterator i--迭代器定义
//对vector赋值
for(int j=;j<v.size();++j)
v[j]=;
v[]=;v[]=;v[]=;
v.at()=;
//输出vector的值
cout<<"The original vector is:";
for_each(v.begin(),v.end(),fun);
//相当于for(vector<int>::iterator i=v.begin();i!=v.end();++i)
//fun函数用来输出
//STL中的功能,便于输(tou)出(lan) :)
cout<<"\n"; //向vector中插入元素
v.insert(v.begin(),); //在v[0]插入9
v.insert(v.begin()+,); //在v[2]插入19
v.insert(v.end(),); //在最后一个位置v[10+2+1]插入29
//输出
cout<<"The new vector is:";
for_each(v.begin(),v.end(),fun);
cout<<endl; //删除
v.erase(v.begin()+);
v.erase(v.begin()+,v.begin()+);
cout<<"The Deleted vector is:";
for_each(v.begin(),v.end(),fun); //清空 v
v.clear();
cout<<endl<<"Cleared vector-size is:"<<v.size()<<endl;
cout<<endl; //开始排序
cout<<"sort-vector:"<<endl;
for (int j = ; j < ; ++j)
{
v.push_back(-j);
}
cout<<"The original vector is:";
for_each(v.begin(),v.end(),fun);
cout<<endl;
sort(v.begin(),v.end()); //排序,默认升序.
cout<<"The sorted vector is:";
for_each(v.begin(),v.end(),fun);
cout<<endl;
//将vector逆转
reverse(v.begin(),v.end());
cout<<"The reversed vector is:";
for (i = v.begin(); i != v.end(); ++i)
{
cout<<*i<<" ";
}
cout<<endl;
//用自定义的排序规则,按从大到小排序
sort(v.begin(),v.end(),cmp);
cout<<"The ownner-sorted original-vector is:";
for_each(v.begin(),v.end(),fun);
cout<<endl; int a[]={,,,,}; //定义一个数组,并用vector复制
vector<int> v2(a,a+); //构造函数并复制 a中的前3个数字
cout<<"v2为:";
for_each(v2.begin(),v2.end(),fun);
return ;
}
编译结果如下:

STL笔记(に)--vector容器的更多相关文章
- 带你深入理解STL之Vector容器
C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. ST ...
- 跟我一起学STL(2)——vector容器详解
一.引言 在上一个专题中,我们介绍了STL中的六大组件,其中容器组件是大多数人经常使用的,因为STL容器是把运用最广的数据结构实现出来,所以我们写应用程序时运用的比较多.然而容器又可以序列式容器和关联 ...
- STL 查找vector容器中的指定对象:find()与find_if()算法
1 从vector容器中查找指定对象:find()算法 STL的通用算法find()和find_if()可以查找指定对象,参数1,即首iterator指着开始的位置,参数2,即次iterator指着停 ...
- STL之vector容器详解
vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说: ...
- [转]STL之vector容器详解
vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说: ...
- STL之vector容器的实现框架
说明:本文仅供学习交流,转载请标明出处,欢迎转载. 实现vector容器的思路等同于实现一个动态数组,以下我们參照源代码的相关资料,给出一个vector容器的大致框架,仅仅有声明,没给出详细的实现. ...
- 【C++】STL,vector容器操作
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板.标准库vector类型使用需要的头 ...
- STL中vector容器实现反转(reverse)
vector容器中实现可以通过以下两种方式实现: #include "stdafx.h" #include <vector> #include <iostream ...
- STL:vector容器用法详解
vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组.像数组一样,vector类也用从0开始的下标表示元素的位置:但和数组不同的是,当vector对象创建后,数组的元素个数会随着ve ...
随机推荐
- 关于after和before
你可曾'百度一下'? 在以前的很多时候,当我断网了,或者网络出了莫名其妙的问题时,我总是第一个输入它的网址.它不仅仅是一个搜索引擎.它还是我检验网络的唯一标准(手动滑稽). CSS中的after和be ...
- leetcode 91. 解码方法
题目描述: 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...
- Oracle的表操作,约束
回顾MySQL创建表语句users(id整型/name字符串/birthday日期型,默认今天)drop table if exists users;create table if not exist ...
- MySQL导入大sql 文件大小限制问题的解决
解决过程如下: 1.由于mysql能解析sql的压缩文件,因此将200M压缩后为5M. 2.默认情况下:MySQL导入文件大小有限制的,最大为2M,所以当文件很大时候,直接无法导入,可修改php.in ...
- Java开发笔记(九十八)利用Callable启动线程
前面介绍了如何利用Runnable接口构建线程任务,该方式确实方便了线程代码的复用与共享,然而Runnable不像公共方法那样有返回值,也就无法将线程代码的处理结果传给外部,造成外部既不知晓该线程是否 ...
- python复数
复数的概念在很久以前,数学家们被下面的等式困扰.x2=-1这是因为任何实数(无论正负)乘以自己总会得到一个非负数.一个数怎么可以乘以自己得到一负数?没有这样的实数存在.就这样18世纪,数学家们发了一个 ...
- 解惑好文:移动端H5页面高清多屏适配方案
背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范 ...
- pandas:数据分析
一.介绍 pandas是一个强大的Python数据分析的工具包,是基于NumPy构建的. 1.主要功能 具备对其功能的数据结构DataFrame.Series 集成时间序列功能 提供丰富的数学运算和操 ...
- 从零开始的全栈工程师——js篇2.13(案例存放:三重数组渲染)
- vim常用命令大全
在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行.你可以试试把代码缩进任意打乱再用n==排版,相当于一般IDE里的code format.使 ...