今天复习到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. Ubuntu14.04安装build-essential失败,包依赖问题如何解决?

    正在读取软件包列表... 完成 正在分析软件包的依赖关系树        正在读取状态信息... 完成        有一些软件包无法被安装.如果您用的是 unstable 发行版,这也许是 因为系统 ...

  2. 最大流模版 pascal

    //最大流模版 ; maxm=; ..maxn] of integer; end; var n,m,max:longint; r:..maxn,..maxn] of longint; g:..maxn ...

  3. 【Python】实现简单循环

    # -*- coding:utf-8 -*- #猜数字游戏 lucky_num = 6 count = 0 while count < 3: input_num = int(raw_input( ...

  4. 查看外网出口IP && Traceroute

    一.CentOS 查看外网出口IP 1---------------- # curl ifconfig.me 2----------------# curl icanhazip.com 二.Trace ...

  5. HDU 5384 AC自动机

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5384 题意:给n个母串,给m个匹配串,求每个母串依次和匹配串匹配,能得到的数目和. 分析:之前并不知道AC ...

  6. C++注意事项

    1.static和const不能同时修饰类的成员函数(static int getde()const;) 分析:原因在于const会在函数中添加一个隐式参数const this*,而static是没有 ...

  7. redis 数据结构一 之t_string

    简介 REDIS有非常丰富的数据结构 以及建立在这数据结构上的操作,在源文件中主要集中在 T_hash.c /T_list.c /T_string.c/T_zset.c 可以说读懂了这4个源文件  大 ...

  8. 鼠标焦点变化引起mouseout事件

    做了个小手术,渐渐回归网络啦! 问题: 在自制的提示离鼠标太近时,会引起无法提示的功能. 自制提示离图片太近时,提示图片一直一闪一闪的,截图截不出来,就只放改善后的图片(不闪). 原因: 为什么呢?书 ...

  9. PHP构造方法

    构造方法 1.(特殊)对象创建完成后第一个自动调用的方法: 2.(特殊)方法名比较特殊,方法名可以与类相同: 3.给对象中的成员赋初始值: class boyfriend{ public $name; ...

  10. MVCC PostgreSQL实现事务和多版本并发控制的精华

    原创文章,同步发自作者个人博客,http://www.jasongj.com/sql/mvcc/ PostgreSQL针对ACID的实现机制 事务的实现原理可以解读为RDBMS采取何种技术确保事务的A ...