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容器的更多相关文章

  1. 带你深入理解STL之Vector容器

    C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. ST ...

  2. 跟我一起学STL(2)——vector容器详解

    一.引言 在上一个专题中,我们介绍了STL中的六大组件,其中容器组件是大多数人经常使用的,因为STL容器是把运用最广的数据结构实现出来,所以我们写应用程序时运用的比较多.然而容器又可以序列式容器和关联 ...

  3. STL 查找vector容器中的指定对象:find()与find_if()算法

    1 从vector容器中查找指定对象:find()算法 STL的通用算法find()和find_if()可以查找指定对象,参数1,即首iterator指着开始的位置,参数2,即次iterator指着停 ...

  4. STL之vector容器详解

    vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说: ...

  5. [转]STL之vector容器详解

    vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说: ...

  6. STL之vector容器的实现框架

    说明:本文仅供学习交流,转载请标明出处,欢迎转载. 实现vector容器的思路等同于实现一个动态数组,以下我们參照源代码的相关资料,给出一个vector容器的大致框架,仅仅有声明,没给出详细的实现. ...

  7. 【C++】STL,vector容器操作

    C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板.标准库vector类型使用需要的头 ...

  8. STL中vector容器实现反转(reverse)

    vector容器中实现可以通过以下两种方式实现: #include "stdafx.h" #include <vector> #include <iostream ...

  9. STL:vector容器用法详解

    vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组.像数组一样,vector类也用从0开始的下标表示元素的位置:但和数组不同的是,当vector对象创建后,数组的元素个数会随着ve ...

随机推荐

  1. Memento模式(备忘录设计模式)

    Memento模式? 使用面向对象编程的方式实现撤销功能时,需要事先保存实例的相关状态信息.然后,在撤销时,还需要根据所保存的信息将实例恢复至原来的状态.这个时候你需要使用Memento设计模式.(以 ...

  2. Luogu P2183 [国家集训队]礼物 扩展卢卡斯+组合数

    好吧学长说是板子...学了之后才发现就是板子qwq 题意:求$ C_n^{w_1}*C_{n-w_1}^{w_2}*C_{n-w_1-w_2}^{w_3}*...\space mod \space P ...

  3. 配置了SSH后还是每次都要求输入密码

    保存凭证可以解决问题 git config --global credential.helper store

  4. JAVA多线程之Semaphore

    Semaphore:动态增减信号量,用于控制对某资源访问的同一时间的并发量.类似于令牌,谁拿到令牌(acquire)就可以去执行了,如果没有令牌则需要等待. [如何获取]:semaphore.tryA ...

  5. calendar 类 用法

    add()和roll()区别 一.Calendar 月份从 0-11,要表示8月,应该传入7 . 二.set() 会自动转换为合法的日期,如 set(1999,8,31)  表示的是1999-09-3 ...

  6. SQL Server 脚本跟踪

    1.查询 DataBasesID select db_id('regdatas') 2.获取进程ID 3.过滤定位

  7. 通过Maven管理多个MapReduce项目

    1. 配置Maven环境 首先检查Windows是否配置了maven,进入cmd命令行,输入mvn -version命令,如果出现下图所示的 情形则表示满意配置maven. 从浏览器进入maven官网 ...

  8. C#常用控件的属性以及方法(转载)

    -----以前看别人的,保存了下来,但是忘了源处,望见谅. C#常用控件属性及方法介绍 目录 1.窗体(Form) 2.Label (标签)控件 3.TextBox(文本框)控件 4.RichText ...

  9. 一个基于 easyui, vue 和 maptalks 的简单地图应用

    一个基于 easyui, vue 和 maptalks 的简单地图应用 做了一个小应用,结合 easyui , vue 和 maptalks 的简单的地图应用.可以用来画图,什么的. 地址

  10. 安卓adb调试命令常见的问题

    首先本人使用的是ubuntu系统,在Eclipse下开发的时候使用无线调试,在终端直接输入adb connect 114.114.114.114没有问题,给手机安装软件用adb install  ** ...