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 ...
随机推荐
- js中的一些问题
1.当有其他的库也是使用的是"$",则可以这样写jquery代码: var jQ = jQuery.noConflict(); //把jQuery中的$赋给jQ变量 (functi ...
- Qt学习之网络编程(二)
UDP协议 UDP协议(用户数据报协议)是一种简单轻量级.不可靠.面向数据报.无连接的传输层协议.之后我们会介绍TCP协议,相对于UDP,TCP是一种可靠的.有连接的协议:既然这样我们就用TCP不就好 ...
- mysql /etc/my.cnf
[client] port=3306 socket = /tmp/mysql.sock default-character-set=utf8 [mysqld] # 1 general config p ...
- python入门之time模块和datetime模块
time模块 时间三种表示:时间戳(秒单位),struct_time(元组,可以分开调用),指定格式(格式化) time.sleep() 等待5秒钟 time.time() 返回时间戳 time.ct ...
- UVALive 7500 Boxes and Balls 2015EC final 签到题 二分
分析题目后,得到要求的是最接近n的一个数,并且这个数字能写成1+2+3+....+x = ans这种形式. 要求的是最大的值. 这题就直接二分去做吧.二分出一个f(mid)<=n的最大值. 最后 ...
- UiAutomator快速调试
步骤: 1.打开浏览器,输入网址https://github.com,搜索uiautomatorhelper 2. 3 . 4.打开eclipse,File-&g ...
- Java文件与io——字节流
FileOutputStream用于写入诸如图像数据之类的原始字节的流 字节输出流:OutputStream 此抽象类表示输出字节流的所有类的超类.(写) 字节输入流:InputStream(读) p ...
- Storm概念学习系列之Blot消息处理者
不多说,直接上干货! Bolt消息处理者 认识了消息源Spout和消息的数据存储元组Tuple,接下来了解消息的处理者Bolt.Bolt是接收Spout发出元组Tuple后处理数据的组件,所有的消息处 ...
- Dede友情链接和分页列表和内容分页去掉小圆点LI标签
我用了一个比较老式的模板,友情链接和列表页底下的一段分页导航会自动获取LI标签,导致错位.每段文字前还多出一个可恶的黑色实心小圆点,心想肯定是LI标签在搞怪,于是把模板文件和样式文件都翻看了一个底朝天 ...
- Java实例学习——企业进销存管理系统(3)
Java实例学习--企业进销存管理系统(3) (本实例为书上实例,我所记录的是我的学习过程) 开始时间:2月12日 完成时间:暂未完成 2月16日-公共类(Item公共类,数据模型公共类,Dao公共类 ...