C++--VECTOR的简单应用
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结。
1 基本操作
(1)头文件#include<vector>.
(2)创建vector对象,vector<int> vec;
(3)尾部插入数字:vec.push_back(a);
(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。
(5)使用迭代器访问元素.
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;
(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;
(7)删除元素: vec.erase(vec.begin()+2);删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始
(8)向量大小:vec.size();
(9)清空:vec.clear();
2.下面是我自己测试的一些用法,仅供参考:
#include<iostream>
#include<vector>
#include<stdio.h>
using namespace std; typedef struct A{
int id;
int length;
int width;
//对于一些向量的元素是结构体的,可以在结构体里面定义比较函数,下面按照id,length,width升序排序
bool operator<(const A &a)const{
if(id!=a.id)
return id<a.id;
else{
if(length!=a.length)
return length<a.length;
else
return width<a.width;
}
}
}A;
int main(){
vector<int> vi;
vi.push_back();//这个是从向量的末尾插入元素
vi.push_back();
vi.pop_back();//从末尾删除元素
vi.push_back(); vector<int>::iterator iter;//通过迭代器遍历vector中的元素
for(iter=vi.begin();iter!=vi.end();iter++){
cout<<*iter<<" ";
}
cout<<endl; vi.insert(vi.begin()+,);//在指定的位置插入元素
for(iter=vi.begin();iter!=vi.end();iter++){
cout<<*iter<<" ";
}
cout<<endl; vi.erase(vi.begin()+);//删除指定位置的元素
for(iter=vi.begin();iter!=vi.end();iter++){
cout<<*iter<<" ";
}
cout<<endl; vi.erase(vi.begin()+,vi.end());//这个是删除指定区间的元素,区间为【i,j]
for(iter=vi.begin();iter!=vi.end();iter++){
cout<<*iter<<" ";
}
cout<<endl; //向量的测试
vector <A> vec;
A a;//初始化一个结构体元素
a.id=;
a.length=;
a.width=; vec.push_back(a);//插入进向量中
vector<A>:: iterator ite;
ite=vec.begin();
cout<<(*ite).id<<" "<<(*ite).length<<" "<<(*ite).width<<endl;
}
3.下面这些是一些简单的算法,还有其他的算法如果需要的话请参考《STL源码剖析》
(1) 使用reverse将元素翻转:需要头文件#include<algorithm>
reverse(vec.begin(),vec.end());将元素翻转(在vector中,如果一个函数中需要两个迭代器,
一般后一个都不包含.)
(2)使用sort排序:需要头文件#include<algorithm>,
sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).
可以通过重写排序比较函数按照降序比较,如下:
定义排序比较函数:
bool Comp(const int &a,const int &b)
{
return a>b;
}
C++--VECTOR的简单应用的更多相关文章
- 必须要注意的 C++ 动态内存资源管理(六)——vector的简单实现
必须要注意的 C++ 动态内存资源管理(六)——vector的简单实现 十六.myVector分析 我们知道,vector类将其元素存放在连续的内存中.为了获得可接受的性能,vetor ...
- vector的简单运用(士兵队列训练问题)
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序 ...
- Vector 容器简单介绍
# Vector STL简要介绍 关于STL中的vector容器,以下做一些相关介绍. #### vector 简要概述 vector 称作向量类,属于容器类,实现了动态的数组,用于元素数量变化的对象 ...
- STL - Vector迭代器简单应用之计算元素和
Description 用vector向量容器装入10个整数,然后,使用迭代器iterator和accumulate算法统计出这10个元素的和 Solution #include "stda ...
- vector的简单用法
vector是C++中容器的一种,与普通的数组相比,它可以动态的增长,而且还有封装了用于顺序表的操作的方法. 使用vector定义了容器之后,如果定义了容器的大小,则可以在大小范围之内直接使用数组的方 ...
- C++STL中的vector的简单实用
[原创] 使用C++STL中的vector, #include <stdio.h> #include<stdlib.h> #include<vector> usin ...
- PAT 甲级 1074 Reversing Linked List (25 分)(链表部分逆置,结合使用双端队列和栈,其实使用vector更简单呐)
1074 Reversing Linked List (25 分) Given a constant K and a singly linked list L, you are supposed ...
- 给jdk写注释系列之jdk1.6容器(10)-Stack&Vector源码解析
前面我们已经接触过几种数据结构了,有数组.链表.Hash表.红黑树(二叉查询树),今天再来看另外一种数据结构:栈. 什么是栈呢,我就不找它具体的定义了,直接举个例子,栈就相当于一个很窄的木桶 ...
- C++模板之Vector与STL初探
STL源码初步接触 STL = Standard Template Library,直译过来是:标准模板库,是惠普实验室开发的一系列软件的统称.从根本上说,STL是一些"容器"的集 ...
随机推荐
- Java进阶知识点2:看不懂的代码 - 协变与逆变
一.背景 要搞懂Java中的协办与逆变,不得不从继承说起,如果没有继承,协变与逆变也天然不存在了. 我们知道,在Java的世界中,存在继承机制.比如MochaCoffee类是Coffee类的派生类,那 ...
- BeetleX高性能通讯开源组件
net core高性能通讯开源组件BeetleX https://www.cnblogs.com/smark/p/9617682.html BeetleX beetleX是基于dotnet core实 ...
- [BZOJ5251][多省联测2018]劈配
bzoj luogu sol 从前往后依次加边,每次对一个人做完劈配后就把当前这个残余网络存下来.这样第二问就可以二分排在第几名然后check一下在对应排名的残余网络上还能不能再增广. 给网络流开结构 ...
- mapreduce-实现多表关联
//map package hadoop3; import java.io.IOException; import org.apache.hadoop.io.LongWritable;import o ...
- ASP.NET MVC 缓存Outputcache (局部动态)
首先说一下需求: 比如我需要对网站首页做缓存,于是在首页对于的Action上贴上了Outputcache,接着问题就来了,首页上的有部分数据是不能做缓存的,比如个人信息,不然,每个人登陆都是看到第一个 ...
- Hybrid APP混合开发
写在前面: 由于业务需要,接触到一个Hybrid APP混合开发的项目.当时是第一次接触混合开发,有一些经验和总结,欢迎各位一起交流学习~ 1.混合开发概述 Hybrid App主要以JS+Nativ ...
- Azure RBAC管理ASM资源
上一篇文章介绍了Azure基于ARM的RBAC,给不同的用户分配不同的权限. 但目前在国内使用的大部分用户还是以ASM的资源为主.比如:VM.Storage.Network.WebAPP.SQL Az ...
- mybatis association表关联与rowbounds共同使用时的异常及其解决方案
按照mybatis手册中所说的,association有两种实现方式,嵌套查询和嵌套结果映射.如手册中所述,select方式会带来N+1次查询的问题,考虑到效率问题的话建议使用嵌套结果映射.但是在结合 ...
- Java-API:java.util.map
ylbtech-Java-API:java.util.map compact1, compact2, compact3 java.util Interface Map<K,V> Type ...
- RabbitMQ 消息队列 应用
安装参考 详细介绍 学习参考 RabbitMQ 消息队列 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. M ...