今天复习到vector向量容器,里面包括vector向量容器的一些优点以及具体的使用方法及代码,分享给大家。

Vector向量容器不但能够像数组一样对元素进行随机访问,还可以在尾部插入元素,是一种简单、高效的容器,完全可以代替数组。

Vector具有内存自动管理的功能,对于元素的插入和删除,可以动态调整所占的内存空间。

使用vector向量容器,需要在头文件中包含“#include<vector>”。

Vector向量容器的下标是从0开始计数的。

使用方法:

1.创建vector对象

(1)不指定容器的元素个数

vector<int>v;

(2)创建的时候指定容器的大小

Vector<double>v(10);

(3)创建一个具有n个元素的向量容器对象,没个元素具有指定的初始值。

Vector<int>v(10,8.6);

2.尾部元素扩张

在使用vector向量容器的时候,我们通常使用push_back()函数对vector容器在尾部追加新的元素。

在尾部追加新的元素时候,vector容器会自动分配新的内存空间。

vector<int>v;

v.push_back(2);

3.通过下标的方式访问vector元素

vector<int>v;

cout<<v[1]<<endl;

4.通过迭代器访问vector元素

我们在对vector中的元素进行访问的时候,通常使用迭代器配合循环语句对vector中的元素进行遍历访问,迭代器的类型一定要与它要遍历的vector对象的元素类型一致。

#include<iostream>

#include<vector>

using namespace std;

int main(){

vector<int>v;

v.push_back(2);

v.push_back(7);

v.push_back(10);

vector<int>::iterator it;

for( it = v.begin() ; it != v.end() ; it++ )

cout<<*it<<" ";

cout<<endl;

return 0;

}

5.元素的插入

insert方法可以在vector对象的任意位置前插入一个新的元素,同时,vector自动扩张一个元素空间,插入位置后的所有元素一次向后挪动一个位置。

注意:insert()方法要求插入的位置,是元素的迭代器位置,而不是元素的下标。

#include<iostream>

#include<vector>

using namespace std;

int main(){

vector<int>v;

v.push_back(2);

v.push_back(7);

v.push_back(10);

//在最前面插入元素,元素值为8

v.insert(v.begin() , 8);

//在第2个元素前面插入新元素,元素值为1

v.insert(v.begin()+1 , 1);

//在末尾追加新的元素3

v.insert(v.end(),3);

vector<int>::iterator it;

for( it = v.begin() ; it != v.end() ; it++ )

cout<<*it<<" ";

cout<<endl;

return 0;

}

6.元素的删除.

erase()方法可以删除vector中迭代器所指的一个元素或一段区间中的所有元素。

clear()方法可以一次性的删除vector中的所有元素。

#include<iostream>

#include<vector>

using namespace std;

int main(){

vector<int>v;

v.push_back(2);

v.push_back(7);

v.push_back(10);

//在最前面插入元素,元素值为8

v.insert(v.begin() , 8);

//在第2个元素前面插入新元素,元素值为1

v.insert(v.begin()+1 , 1);

//在末尾追加新的元素3

v.insert(v.end(),3);

//删除第2个元素

v.erase(v.begin()+1);

//删除迭代器第1到第5区间的所有元素

v.erase(v.begin(),v.begin()+5);

//清空向量

v.clear();

vector<int>::iterator it;

for( it = v.begin() ; it != v.end() ; it++ )

cout<<*it<<" ";

cout<<endl;

return 0;

}

7.使用reverse反向排列算法

reverse反向排列算法,需要定义头文件“#include<algorithm>”,该算法可以将向量中某段迭代器区间元素反向排列。

#include<iostream>

#include<vector>

#include<algorithm>

using namespace std;

int main(){

vector<int>v;

v.push_back(2);

v.push_back(7);

v.push_back(10);

//在最前面插入元素,元素值为8

v.insert(v.begin() , 8);

//在第2个元素前面插入新元素,元素值为1

v.insert(v.begin()+1 , 1);

//在末尾追加新的元素3

v.insert(v.end(),3);

vector<int>::iterator it;

for( it = v.begin() ; it != v.end() ; it++ )

cout<<*it<<" ";

cout<<endl;

reverse(v.begin() , v.end());

for( it = v.begin() ; it != v.end() ; it++ )

cout<<*it<<" ";

cout<<endl;

return 0;

}

8.在对vector向量容器中的元素进行排列的时候,还可以通过sort()算法排序,排列方法自定义。

9.向量的大小

使用size()方法可以返回向量的大小,即元素的个数。

使用empty()方法可以返回向量是否为空。

#include<iostream>

#include<vector>

#include<algorithm>

using namespace std;

int main(){

vector<int>v;

v.push_back(2);

v.push_back(7);

v.push_back(10);

//在最前面插入元素,元素值为8

v.insert(v.begin() , 8);

//在第2个元素前面插入新元素,元素值为1

v.insert(v.begin()+1 , 1);

//在末尾追加新的元素3

v.insert(v.end(),3);

vector<int>::iterator it;

for( it = v.begin() ; it != v.end() ; it++ )

cout<<*it<<" ";

cout<<endl;

reverse(v.begin() , v.end());

for( it = v.begin() ; it != v.end() ; it++ )

cout<<*it<<" ";

cout<<endl;

//输出向量大小,即包含了多少个元素

cout<<v.size()<<endl;

//输出向量是否为空,如果非空,则返回逻辑假,即0,否则返回逻辑真,即1

cout<<v.empty()<<endl;

v.clear();

cout<<v.size()<<endl;

cout<<v.empty()<<endl;

return 0;

}

学习笔记之vector向量容器的更多相关文章

  1. vector向量容器(常用的使用方法总结)

    关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...

  2. vector向量容器

    vector向量容器不但可以像数组一样对元素进行随机访问,还能在尾部插入元素,是一种简单高效的容器,可以代替数组. vector具有内存自动管理的功能,对于元素的插入和删除,可以动态的调整所占内存. ...

  3. 标准模板库使用参考——vector向量容器

    C++的STL从广义上讲分为algorithm(算法),container(容器)和iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法. 在C++标准库中,ST ...

  4. vector向量容器元素排序与查找

    1.利用标准库函数sort()对vector进行排序 参考源码: #include <algorithm> #include <vector> vector<int> ...

  5. C++STL之vector向量容器

    vector向量容器   vector向量容器不但能向数组一样对元素进行随机访问, 还能在尾部插入元素 vector具有内存自动管理的功能, 对于元素的插入和删除, 可动态调整所占的内存空间 vect ...

  6. Flutter学习笔记(10)--容器组件、图片组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...

  7. Essential C++ 学习笔记02--Array/Vector 与指针

    Essential C++ 1.5-1.6节,3.1节笔记 Array/Vector/指针,难度偏大, 但若学习初期不熟悉基本用法,则难以写出有效代码. 1. 基本概念 Array 是一段连续内存,数 ...

  8. 利用copy函数简单快速输出/保存vector向量容器中的数据

    如果要输出vector中的数据我们可以通过循环语句输出,更加简便的方法是利用copy函数直接输出,例子: #include "stdafx.h" #include <iost ...

  9. vector 向量容器用法祥解

    vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法:         ...

随机推荐

  1. META元素使用的简单学习

    meta标签是我们学习html时容易忽略的标签,其实它的作用很大,下面就一些网上关于meta标签的讲解内容做一个简单的归纳. META标签共有两个属性,它们分别是Http-equiv属性和Name属性 ...

  2. 深入理解JavaScript系列:试着谈谈闭包

    闭包可能是JavaScript里最被人神乎其神的一个概念,世间万物皆凡夫俗子,你觉着他神奇是因为你根本没有了解,所有的事物当你了解透彻后就不会有这种不明觉厉的错觉了.哈哈哈,上来又是一顿哲学普及. 下 ...

  3. 关于angularjs中ajax请求php接口参数个是转换的问题

    mainApp.config(function($httpProvider){ $httpProvider.defaults.transformRequest = function(obj){ var ...

  4. H3C汇聚层交换机认证在线人数展示系统之需求说明和功能点说明

    一.需求 (一)每五分钟查询一次交换机的连接情况: (二)每2.5分钟更新每栋楼的连接情况. 二.功能点 序号 功能点说明 待定 完成 未完成 完成时间 预计用时(min) 实际用时(min) 备注 ...

  5. wamp出现You don’t have permission to access/on this server提示的解决方法

    本地搭建wamp 输入http://127.0.0.1访问正常,当输入http://localhost/ apache出现You don't have permission to access/on ...

  6. [GodLove]Wine93 Tarining Round #4

    比赛链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=44903#overview 题目来源: 2011 Asia ChengDu R ...

  7. 附加数据库失败,操作系统错误 5:"5(拒绝访问。)"的解决办法

    无法打开物理文件 XXX.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server,错误: 5120)   找到xxx.MDF与xx ...

  8. linux sed的使用

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理, 可以将数据行进行替换.删除.新增.选取等特定工作. sed本质上是一个编辑器,但是它是非交互式的,这点与VIM不同:同时 ...

  9. nginx 基本操作

    nginx 是什么 nginx 是轻量.高性能的网页服务器,相较 Apache 占有内存小. 下载 https://nginx.org/en/download.html 默认根目录 安装目录下的 ht ...

  10. java 读写properties

    网速不好:先贴上资料: Java配置文件Properties的读取.写入与更新操作 [Spring] - Property注入 http://www.360doc.com/content/14/073 ...