这里主要是对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的应用相关推荐

  1. STL 之vector详解

    STL之vector容器详解 vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样 ...

  2. C++ STL之vector常用方法

    C++ STL之vector常用方法 头文件 #include<vector> 初始化方法 vector<int> v; //初始化一个int类型.size为0的vectorv ...

  3. c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件

    Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...

  4. C++STL的vector容器

    C++STL的vector容器 vector容器 vector基本概念 vector构造函数 vector赋值操作 vector容量和大小 vector插入和删除 vector数据存取 vector互 ...

  5. vector 清空 Linux,STL容器vector基础用法小结

    STL容器vector基础用法小结根据<ACM程序设计>写的,用实例展示vector用法. 方法:push_back(), insert(), erase(), clear(), size ...

  6. oracle erase,c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件

    Vectors 包含着一系列连续存储的元素,其行为和数组类似.访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线 ...

  7. STL中Vector的内存分配机制

    一些好的公司校园招聘过程中(包括笔试.面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析.今天看了下相关文章,也写了几个小的测试程序跑了跑.算是总结下,希望对需要的 ...

  8. C++ [STL之vector模拟实现]

    本文已收录至<C++语言和高级数据结构>专栏! 作者:ARMCSKGT STL之vector模拟实现 前言 正文 空间结构 默认成员函数 构造函数 拷贝构造函数 赋值重载 析构函数 关于数 ...

  9. STL中vector、list、deque和map的区别

    vector 向量 相当于一个数组     在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy( ...

  10. C++ STL: 容器vector源码分析

    文章目录 前言 vector的核心接口 vector push_back实现 vector 的 Allocator vector 的 push_back 总结 前言 vector 是我们C++STL中 ...

最新文章

  1. 一分钟帮你提升Android studio 编译速度
  2. 高精度模板 洛谷Luogu P1932 A+B A-B A*B A/B Problem
  3. android 记一次富文本加载之路
  4. JavaUtil_00_资源帖
  5. hyper服务器虚拟网卡和实际网卡,Hyper-V 3 虚拟网卡带宽应用限制
  6. mysql修改级联表数据_MySQL数据库 外键,级联, 修改表的操作
  7. python 验证数据类型函数
  8. 信贷系统学习总结(3)——现金贷之产品架构和信审系统
  9. java中goto用法源代码,java中goto语句解析12
  10. JS 屏蔽按键效果和改变按键效果
  11. Go包管理工具Vendor使用教程
  12. Javascript特效:五彩小球
  13. 计算机相关英语生词积累
  14. java indexeddb_indexedDB 基本使用
  15. UltraScale Architecture Clocking Resources
  16. “记忆力争夺战”走向尾声,“潜意识记忆营销”将成破局利器
  17. StratifiedShuffleSplit实现分层抽样交叉验证
  18. 创新发明与专利实务的尔雅答案
  19. 台积电台中,建2nm和1nm制程工厂
  20. filebeat收集java日志_filebeat采集多个项目日志 | 吴老二

热门文章

  1. Java 一个简单的绘制类似花瓣的程序
  2. [debug] Expected to have finished reduction in the prior iteration before starting a new one.
  3. [转] PyTorch 0.4新版本 升级指南 no_grad
  4. c#ftp操作全解:创建删除目录,上传下载文件,删除移动文件,文件改名,文件目录查询
  5. 生成式对抗网络GAN生成手写数字
  6. 可以看下是什么问题吗
  7. 解析Excel_Poi
  8. Javascript jquery css 写的简单进度条控件
  9. sybase 中可以对现有的表结构进行增加
  10. BZOJ.4500.矩阵(差分约束 SPFA判负环 / 带权并查集)