学习笔记之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++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: ...
随机推荐
- mac OS X Yosemite (10.10.5) 下 安装vim 7.4笔记
摘要 前言 需求与mac OS X 自带vim版本的冲突 默认Python解释器问题 并非Mac自带python的 homebrew 1. 前言 本文为自己作死折腾的问题记录 2. 需求与mac OS ...
- TCPCopy使用
http://www.thinkingbar.com/2014/04/17/tcpcopy使用/ 主题 技术 一.应用背景 主要用于系统的稳定性测试.它可以复制线上服务器的请求,通过修改TCP/I ...
- 将NSString转换成UTF8编码的NSString
在使用网络地址时,一般要先将url进行encode成UTF8格式的编码,否则在使用时可能报告网址不存在的错误,这时就需要进行转换 下面就是转换函数: NSString *urlString= [NSS ...
- android手动修改density(dpi)的方法
Android系统中会根据屏幕分辨率范围,制定默认的density,既320(xhdpi),那么我们也可以手动修改density. 修改的方式在system.prop中修改ro.sf.lcd_dens ...
- PKu 2195
//PKu 2195 回家 By Loli_con Enail : Loli_con@outlook.com /* 题目叙述 ========= 在一个网格图中,有n个人和n个房子.每一个单位时间,每 ...
- Direct3D 10学习笔记(一)——初始化
本篇将简单整理Direct3D 10的初始化,具体内容参照< Introduction to 3D Game Programming with DirectX 10>(中文版有汤毅翻译的电 ...
- block,inline和inline-block概念和区别(转)
转自 http://www.cnblogs.com/KeithWang/p/3139517.html 总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-lev ...
- Golang游戏服务器
我对和GOLANG写MMO服务器的一些遐想: 1.沙盒(隔离性) SKYNET:原生LUA STATE作为沙盒, 进行服务器间隔离安全性高: 服务可以很容易的配置到不同节点之上. GO:估计用RECO ...
- Android中常见功能包描述(转)
在Android中,各种包写成android.*的方式,重要包的描述如下所示:android.app :提供高层的程序模型.提供基本的运行环境android.content:包含各种的对设备上的数据进 ...
- js调用函数时括号加与不加的区别,function()&function
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...