C++中vector 容器的基本操作
vector是一种简单高效的容器,具有自动内存管理功能。对于大小为n的vector容器,它的元素下标是0~n-1。
vector有二个重要方法:
begin(): 返回首元素位置的迭代器。
end(): 返回最后一个元素的下一个元素位置的迭代器。
1、 vector对象创建的几种方式。
1)不指定容器元素个数。
vector<double> v;
2)指定容器元素个数。
vector<double> v(10); //10个元素
3)指定容器元素个数并初始化。
vector<double> v(10, 7.8); //10个元素,初始化为7.8
2、访问和遍历vector容器
1)下标方式访问vector元素并赋值。类似数组的访问和赋值
v[0] = 3.6; v[3]=5.5;
2)使用迭代器配合循环对vector进行遍历访问
vector<double> v();
v[] = 1.2;
v[] = 6.1;
v[] = 3.7;
vector<double>::iterator it;
for(it=v.begin(); it!=v.end(); it++)
{
cout<<*it<<endl;
}
3、 向vector中添加元素
1) 向vector容器的尾部追加新元素。
v.push_back(new_element);
2) insert()方法在vector对象的任意位置前插入一个新元素,同时vector自动扩张一个元素空间,插入位置后的所有元素都向后挪动一个位置。
v.insert(v.begin()+2, 12.5); //在第二个元素前插入新元素12.5。
v.insert(v.end(), 6.5); //在容器的末尾加入了新元素6.5。
4、元素的删除
1) 删除一个元素或一段区间中所有元素
v.erase(v.begin()+2); //删除第二个元素,从0开始计数
v.erase(v.begin()+1, v.begin()+5); //删除第1~5中的所有元素。
2) 删除vector中所有元素
v.clear(); //删除v中的所有元素
5、对vector中元素排序
1) sort()对元素排序。需要头文件”#include <algorithm>”
sort(v.begin(), v.end()); //sort()默认升序排序
//自己设计比较函数进行排序
bool comp(const int &a, const int &b)
{
return a>b;
}
sort(v.begin(), v.end(), comp); // 元素降序排列
2)reverse()反向排列。需要头文件”#include <algorithm>”
reverse(v.begin(), v.end()); //反向排列向量的从头到尾的元素
6、获得vector的大小
1) 使用size返回向量的大小,即元素个数。
v.size(); //返回v的元素个数
2) empty()判断向量是否为空。
v.empty(); //v如果为空,则返回逻辑真,即1,否则返回逻辑假0。
参考文献:
曾宗根, ACM程序设计, 北京大学出版社, 2008.11
C++中vector 容器的基本操作的更多相关文章
- C++中vector容器的常用操作方法实例总结
C++中vector容器的常用操作方法实例总结 参考 1. C++中vector容器的常用操作方法实例总结: 完
- C++ STL之vector容器的基本操作
注意事项:特别注意任何时候同时使用两个迭代器产生的将会是一个前闭后开的区间(具体见插入和删除的例子)特别注意begin()指向的是vec中的第0个元素,而end是指向最后一个元素的后面一个位置(不是最 ...
- STL中vector容器实现反转(reverse)
vector容器中实现可以通过以下两种方式实现: #include "stdafx.h" #include <vector> #include <iostream ...
- (转载)C++STL中vector容器的用法
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说vec ...
- C++STL库中vector容器常用应用
#include<iostream> #include<vector> #include<algorithm> using namespace std; int m ...
- c++中vector容器的功能及应用。
vector基本操作: 1.头文件 #include<vector>. 注:一定要加上using namespace std; 2.vector对象的创建: vector<int ...
- C++STL(二)——vector容器
STL--vector容器 vector对象的概念 vector基本操作 vector对象的初始化.赋值 vector查找.替换(已在上一片 string类 博客总结过了,不再总结) vector添加 ...
- C++ Daily《2》----vector容器的resize 与 reserve的区别
C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2 ...
- STL中vector、list、deque和map的区别
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...
随机推荐
- JSP标准标签库(JSTL)--核心标签库 c
核心标签库是JSTL中最重要的部分,可以完成输出,判断,迭代等操作 功能分类: 1. 基本标签: <c:out>:输出属性内容 <c:set>:设置属性内容 <c:rem ...
- 在线更新问题 HDU5877 线段树
题目大意:给你一棵树,有n-1条边,每条边都有方向,每个顶点有权值,给出weak pair的定义是val[u]*val[v] <=k,u是v的祖先,问有多少对这样的顶点 思路:创建线段树,通过d ...
- jsp自动刷新(转)
1.页面自动刷新:把如下代码加入<head>区域中<meta http-equiv="refresh" content="20">,其中 ...
- 总结NAND FLASH控制器的操作
初始化 NAND FLASH: 1)寄存器 NFCONT,用于开启 NAND FLASH控制器: 2)向寄存器NFCMD写入命令: 3)向寄存器NFADDR写入地址: 4)使用寄存器NFDATA进行数 ...
- jsp的Get 与 SET的区别
getParameter:获取前个页面的数据,此方法获取的数据是从前台提交过来的 getAttribute:是获取setAttribute存储的数据 ========================= ...
- 鼠标滚轮事件 onmousewheel
1.fiefox:DOMMouseScroll detail detail*(-40)=wheelDelta 除了firefox之外:mousewheel ...
- Linux内核源代码目录树结构
Linux内核源代码目录树结构. arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录.和32位PC相关的代码存放在i386目录下,其中比较重要的包括kernel(内核核心部分).mm(内 ...
- 无限循环小数POJ1930
题意:给定一个无限循环小数,求其分数形势,要求分母最小 分析:看了别人的题解才做出来的,将无限循环小数转化成分数,分为纯循环和混循环两种形式. (1)对于纯循环:用9做分母,有多少个循环数就几个9,比 ...
- Android之事件分发
网上总结的很详细了,有时间总结下做个笔记
- [Unity Shader]光照模型对物体的假设
什么是光照模型 光照模型就是模拟光在物体间的传递过程,以确保物体可见表面每一点的亮度和颜色. 当光照射到一个物体表面时,光可能被吸收.反射或折射.反射和折射的光使物体可见.如果入射光全部被吸收,物体将 ...