今天复习到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. Enable rsh on MAC OS with command line

    1. Enable rsh on macos. 1). os version (10.0) Enabling the "Allow remote login" option tur ...

  2. josn

     <?php$arr=array('name'=>'张三','age'=>19,'sex'=>'男','status'=>'未婚','className'=>'FG ...

  3. Struts2版本升级到struts2 2.3.15.1操作说明

    Struts2的官网公布了一个远程命令执行漏洞,官方强烈建议升级到2.3.15.1或者以上版本,该版本包含校正过的struts2核心库. 我们之前开发项目主要采用的Struts2版本是2.2.1,本文 ...

  4. javascript中值传递与值引用的研究

    今天重新看了一下<javascript高级程序设计>,其中讲到了javascript中的值传递和值引用,所以就自己研读了一下,但是刚开始没有明白函数中的参数只有值传递,有的场景好像参数是以 ...

  5. 设置时间&时区

    设置时间之前要先了解一件事,时间分为系统时间与硬件时间 如果硬件时间与系统时间不相同的话,经常会发现自己写的程序时间可能对不上 首先修改硬件时间 1)修改时区 输入命令: tzselect 按照指示选 ...

  6. api将一统江湖,再无app

    api的出现,使人们可以通过各种软硬件设备获取所需服务,而不需要安装臃肿的app:今后的智能设备将不再依赖软件.操作系统和硬件,或许一台51单片机都可以提供给用户所需信息.当然连名字都可以简单到不叫a ...

  7. Scrollview嵌套Listview运行后最先显示出来的位置不在顶部而是中间问题

    问题: Scrollview里面嵌套了一个Listview ,通过设置一个方法设置了Listview的高度,现在的情况就是进到这个界面的时候看到的不是最上面 而是中间 解决办法: 设置ListView ...

  8. 挂载NFS

    ARM目标板:192.168.31.66 ubuntu IP:192.168.31.218 一.先安装nfs服务器客户端: $sudo apt-get install nfs-kernel-serve ...

  9. PHP explode()函数

    源起:将日期格式的字符串拆分成年.月.日,用于组织关系介绍信的特定位置打印.感谢倪同学提供思路 定义和用法 explode()函数把字符串分割为数组 语法 explode(separator,stri ...

  10. case when 用法

    1.  case.group by组合用法 首先看看表中的内容  (COUNTRY . POPULATION.  SEX) COUNTRY POPULATION SEX 中国 中国 美国 美国 加拿大 ...