学习笔记之vector向量容器
今天复习到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向量容器的更多相关文章
- vector向量容器(常用的使用方法总结)
关于STL中vector容器的学习,编译运行后边看代码,边看执行结果效果更佳,还是想说看别人的代码一百遍,不如自己动手写一遍. vector向量容器不但能像数组一样对元素进行随机访问,还能随时在尾部插 ...
- vector向量容器
vector向量容器不但可以像数组一样对元素进行随机访问,还能在尾部插入元素,是一种简单高效的容器,可以代替数组. vector具有内存自动管理的功能,对于元素的插入和删除,可以动态的调整所占内存. ...
- 标准模板库使用参考——vector向量容器
C++的STL从广义上讲分为algorithm(算法),container(容器)和iterator(迭代器)三类,包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法. 在C++标准库中,ST ...
- vector向量容器元素排序与查找
1.利用标准库函数sort()对vector进行排序 参考源码: #include <algorithm> #include <vector> vector<int> ...
- C++STL之vector向量容器
vector向量容器 vector向量容器不但能向数组一样对元素进行随机访问, 还能在尾部插入元素 vector具有内存自动管理的功能, 对于元素的插入和删除, 可动态调整所占的内存空间 vect ...
- Flutter学习笔记(10)--容器组件、图片组件
如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...
- Essential C++ 学习笔记02--Array/Vector 与指针
Essential C++ 1.5-1.6节,3.1节笔记 Array/Vector/指针,难度偏大, 但若学习初期不熟悉基本用法,则难以写出有效代码. 1. 基本概念 Array 是一段连续内存,数 ...
- 利用copy函数简单快速输出/保存vector向量容器中的数据
如果要输出vector中的数据我们可以通过循环语句输出,更加简便的方法是利用copy函数直接输出,例子: #include "stdafx.h" #include <iost ...
- vector 向量容器用法祥解
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: ...
随机推荐
- URL重写 urlrouting
在global文件中添加以下的代码 <%@ Import Namespace="System.Web.Routing" %> <script RunAt=&quo ...
- SharePoint 2013 中的 PowerPoint Automation Services
简介 许多大型和小型企业都将其 Microsoft SharePoint Server 库用作 Microsoft PowerPoint 演示文稿的存储库.所有这些企业在 ...
- jfinal和httl结合
一导入jar包 二配置web.xml文件 三配置httl.properties文件 此时会出现如下问题: 解决办法: 加入 javassist-3.15.0-GA.jar包 再运行会有如下警告 解决办 ...
- console对象
今天无意中看到console.info()的时候不自觉的楞了一下,对于console.info()确实不是十分的了解,平时就是用console.log(),既然不太明白就去网上看了一下关于consol ...
- Configure the Windows Firewall to Allow SQL Server Access
参考微软链接: https://msdn.microsoft.com/zh-tw/library/cc646023.aspx
- 获得触发hover事件的元素id
例: <div class="menu"> <ul> <li> <a id="menu1"></a> ...
- linux 查找文件与进程常用命令
Linux的五个查找命令 1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> ...
- js 常见弹出框学习
模拟系统的弹出框 系统自带的弹出框 总结 链接 http://blog.csdn.net/anhuidelinger/article/details/17024491 参考这个网站学习模态框的动态弹 ...
- lambda表达式
什么是Lambda表达式 lambda表达式,它将允许我们将行为传到函数里.在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码.而定义行为最重要的那行代码,却混在中间不够突出 ...
- git命令大全
git init # 初始化本地git仓库(创建新仓库)git config --global user.name "xxx" ...