今天复习到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. 1Caesar加密

    Julius Caesar发明的较早的加密术,举个例子: 明文: meet me after the toga party 密文:   PHHW PH DIWHU WKH WRJD SDUWB 其实就 ...

  2. 服务器列表里找不到OracleOraDb10g_home1TNSListener

    先安装的ORACLE DB,后配置的数据库,TNSNAMES.ORA, LISTENER.ORA配置完毕,客户端连接不上TNS服务器,发现服务列表里没有OracleOraDb10g_home1TNSL ...

  3. PLS-00306错误

    ORA-06550: line 1, column 7:PLS-00306: wrong number or types of arguments in call to 'P'ORA-06550: l ...

  4. awk(2)-模式(pattern)

    在上文 awk(1)-简述我们将简要描述了awk的主要使用方向和构成(由一个或多个模式-动作组成),本小节主要讲述awk的各种模式. ps:例子中使用的输入文件(如countries)内容可由awk( ...

  5. a标签不跳转

    <a href="javascript://">父级菜单</a> 结果是这种写法在一些浏览器下不能到达预期效果(无跳转),我没有花时间把这种写法在主流浏览器 ...

  6. js用户修改密码功能模块

    ;(function(){ var ajaxSub = false, showError = function(msg){ if(msg){ $('#er_txt').html(msg).show() ...

  7. DNS记录类型介绍(A记录、MX记录、NS记录等)

    DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 建站名词解释:DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 泛域名 泛解析 域 ...

  8. 前端开发薪资之各地区对比(图文分析)(share)

    发现最近大家都在关注有关前端开发的薪资问题,不同地方各有差异,今天我就总结一下发出来方便大家的查阅.(2014年) 前面给大家介绍了关于前端开发需要学习的东西,根据你掌握的技能程度,薪水是不一样的.d ...

  9. 吴奇隆刘诗诗婚礼场地:巴厘岛Ayana酒店,美到窒息!

    导读:忍不住转载一下,原文地址:http://www.sjq315.com/news/270768.html 3月20日,吴奇隆和刘诗诗在巴厘岛五星级酒店Ayana Resort and Spa酒店举 ...

  10. React Native的环境搭建以及开发的IDE

    (一)前言 前面的课程我们已经对React Native的环境搭建以及开发的IDE做了相关的讲解,今天我们的主要讲解的是应用设备运行(Running)以及调试方法(Debugging).本节的前提条件 ...