stl之vector的应用
这里主要是对vector容器的一些常见应用的总结。至于vector的构造函数及初始化可以参考http://blog.csdn.net/lsh_2013/article/details/21191289,这里不再赘述。
元素的遍历
用迭代器访问vector元素
#include <vector>
#include <iostream>
using namespace std;
int main(void)
{vector<int> v;v.push_back(42);v.push_back(51);v.push_back(69);vector<int>::iterator i,iend;iend=v.end();int j;for(i=v.begin(),j=0; i!=iend; i++,j++) cout<<"v[" << j << "] = " << *i<< endl;return 0;
}
元素的插入
iterator insert(iteratorpos, const T& x);//在迭代器pos所指的元素前面插入一个元素x
#include <vector>
#include <iostream>
using namespace std;
int main(void)
{vector<int> v;v.push_back(6); v.push_back(7);v.push_back(8);v.push_back(10);v.insert(v.begin() + 3, 9); //在元素的前面插入v.insert(v.begin(), 5); //插入为首元素v.insert(v.end(), 11); //插入为末元素for(int i = 0; i < v.size(); i++) cout << "v[" << i << "] = " << v[i] << endl; return 0;
}
元素的删除
1)iterator erase(iterator pos);//删除迭代器pos所指的元素
2)iterator erase(iterator first, iterator last);//删除迭代区间[first,last)的所有元素
#include <iostream>
#include <vector>
using namespace std;
int main ()
{vector<int> myvector;for (int i=1; i<=10; i++)myvector.push_back(i);//删除第个元素myvector.erase (myvector.begin()+5);//删除前个元素myvector.erase (myvector.begin(),myvector.begin()+3);cout << "myvector contains:";for (unsigned i=0; i<myvector.size(); ++i)cout << ' ' << myvector[i];cout << '\n';return 0;
}
元素的反向遍历
#include <vector>
#include <iostream>
using namespace std;
int main(void)
{vector<int> v;v.push_back(1);v.push_back(3);v.push_back(5);v.push_back(7);v.push_back(9);vector<int>::reverse_iterator ri,riend;riend=v.rend();for(ri=v.rbegin();ri!=riend;ri++)cout << *ri << endl;return 0;
}
Vector的交换
void swap(vector& x); //两个vector容器的元素交换
#include <iostream>
#include <vector>
using namespace std;
int main ()
{vector<int> v1 (2,10); //10 10vector<int> v2 (3,30); //30 30 30cout << "v1 contains:";for (unsigned i=0; i<v1.size(); i++)cout << ' ' << v1[i];cout << '\n';cout << "v2 contains:";for (unsigned i=0; i<v2.size(); i++)cout << ' ' << v2[i];cout << '\n';v1.swap(v2);//交换cout<<"交换后"<<endl;cout << "v1 contains:";for (unsigned i=0; i<v1.size(); i++)cout << ' ' << v1[i];cout << '\n';cout << "v2 contains:";for (unsigned i=0; i<v2.size(); i++)cout << ' ' << v2[i];cout << '\n';return 0;
}
其他常用的函数
1)bool empty();
//判断vector容器是否为空。若容器没有一个元素则返回true,否则返回false。
2)size_type size();
//当前vector容器的实际元素个数。
3)size_typemax_size();
//系统所允许的vector容器的最大元素个数。
4)size_typecapacity();
//当前可容纳vector元素的个数。
5)reference front()
//vector容器的首元素(引用),要求vector不为空。
6)reference back();
//返回vector容器的末元素(引用),要求vector不为空。
7)void pop_back();
//删除末尾的一个容器元素。
此为本人原创,转载请注明出处: http://blog.csdn.net/lsh_2013/article/details/46731331
stl之vector的应用相关推荐
- STL 之vector详解
STL之vector容器详解 vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样 ...
- C++ STL之vector常用方法
C++ STL之vector常用方法 头文件 #include<vector> 初始化方法 vector<int> v; //初始化一个int类型.size为0的vectorv ...
- c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件
Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...
- C++STL的vector容器
C++STL的vector容器 vector容器 vector基本概念 vector构造函数 vector赋值操作 vector容量和大小 vector插入和删除 vector数据存取 vector互 ...
- vector 清空 Linux,STL容器vector基础用法小结
STL容器vector基础用法小结根据<ACM程序设计>写的,用实例展示vector用法. 方法:push_back(), insert(), erase(), clear(), size ...
- oracle erase,c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件
Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...
- STL中Vector的内存分配机制
一些好的公司校园招聘过程中(包括笔试.面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析.今天看了下相关文章,也写了几个小的测试程序跑了跑.算是总结下,希望对需要的 ...
- C++ [STL之vector模拟实现]
本文已收录至<C++语言和高级数据结构>专栏! 作者:ARMCSKGT STL之vector模拟实现 前言 正文 空间结构 默认成员函数 构造函数 拷贝构造函数 赋值重载 析构函数 关于数 ...
- STL中vector、list、deque和map的区别
vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy( ...
- C++ STL: 容器vector源码分析
文章目录 前言 vector的核心接口 vector push_back实现 vector 的 Allocator vector 的 push_back 总结 前言 vector 是我们C++STL中 ...
最新文章
- 一分钟帮你提升Android studio 编译速度
- 高精度模板 洛谷Luogu P1932 A+B A-B A*B A/B Problem
- android 记一次富文本加载之路
- JavaUtil_00_资源帖
- hyper服务器虚拟网卡和实际网卡,Hyper-V 3 虚拟网卡带宽应用限制
- mysql修改级联表数据_MySQL数据库 外键,级联, 修改表的操作
- python 验证数据类型函数
- 信贷系统学习总结(3)——现金贷之产品架构和信审系统
- java中goto用法源代码,java中goto语句解析12
- JS 屏蔽按键效果和改变按键效果
- Go包管理工具Vendor使用教程
- Javascript特效:五彩小球
- 计算机相关英语生词积累
- java indexeddb_indexedDB 基本使用
- UltraScale Architecture Clocking Resources
- “记忆力争夺战”走向尾声,“潜意识记忆营销”将成破局利器
- StratifiedShuffleSplit实现分层抽样交叉验证
- 创新发明与专利实务的尔雅答案
- 台积电台中,建2nm和1nm制程工厂
- filebeat收集java日志_filebeat采集多个项目日志 | 吴老二
热门文章
- Java 一个简单的绘制类似花瓣的程序
- [debug] Expected to have finished reduction in the prior iteration before starting a new one.
- [转] PyTorch 0.4新版本 升级指南 no_grad
- c#ftp操作全解:创建删除目录,上传下载文件,删除移动文件,文件改名,文件目录查询
- 生成式对抗网络GAN生成手写数字
- 可以看下是什么问题吗
- 解析Excel_Poi
- Javascript jquery css 写的简单进度条控件
- sybase 中可以对现有的表结构进行增加
- BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)