一.vector容器

① 动态数组,从末尾能快速插入与删除,直接访问任何元素。
② 一个摸板类,能存放任何类型的对象。
③ Vector作为函数的参数或者返回值时,需要注意它的写法:
double Distance(vector&a, vector&b) 其中的 “&” 绝对不能少!

二.vector的基本操作

(1)创建vector对象,vector vec;

int n;
cin>>n;
vector<int> a(n);//在动态数组创建n个内存,之后仍可拓展内存。

(2)尾部插入数字:vec.push_back(a);

(3)使用下标访问元素,cout<<vec[0]<<endl;

(4)使用迭代器访问元素.

vector<int>::iterator it;for (it = vec.begin(); it != vec.end(); it++)cout << *it << endl;

(5)插入元素: vec.insert(vec.begin()+i, a); //在第i+1个元素前面插入a;

(6)删除元素: vec.erase(vec.begin()+2); //删除第3个元素
vec.erase(vec.begin()+i,vec.end()+j); //删除区间[i,j-1];区间从0开始

(7)向量大小:vec.size();

(8)清空:vec.clear();

(9)使用reverse将元素翻转:
reverse(vec.begin(),vec.end());//将元素翻转,即逆序排列!

(10)使用sort排序:
sort(vec.begin(), vec.end());(默认是按升序排列,即从小到大).

可以通过重写排序比较函数按照降序比较,如下:

bool cmp(const int &a, const int &b) {return a > b;
}
sort(vec.begin(), vec.end(), cmp)

三.vector应用

HDOJ4841-圆桌问题

Problem Description
圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。

Input
多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767);

Output
对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B’表示坏人,50个字母为一行,
不允许出现空白字符。相邻数据间留有一空行。

Sample Input

2 3
2 4

Sample Output

GBBGBGGB

是一个典型的约瑟夫环问题,在这里vector可模拟圆桌,算法思想是让vector只存储好人的编号,不在vector内的编号则全为坏人。

#include<bits/stdc++.h>
#define fio ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
int main() {vector<int> a;int n, m;while (~scanf("%d%d", &n, &m)) {a.clear();for (int i = 0; i < 2*n; i++) {//初始化 a.push_back(i);}int temp = 0;//记录当前位置 for (int i = 0; i < n; i++) {//踢出n个人 temp = (temp+m-1)%a.size();//圆桌是个环,取余处理 a.erase(a.begin() + temp);//赶走坏人,size-1 }int count = 0;for (int i = 0; i < 2*n; i++) {//打印座位 if ((i%50 == 0) && i) cout << endl;//遇到50换行 if (count < a.size() && a[count] == i) {//vector存的都是好人,将size个元素全部输出后,剩余皆为坏人 cout << "G";count++;} else {cout << "B";}}cout << endl << endl;//留空行处理 }
}

STL(二)——向量vector相关推荐

  1. 一维与二维向量vector的使用

    在之前一段之间学习相机标定的时候,经常碰到二维向量,查阅了许多博客和相关书籍,书本上只提及到一维向量,二维向量没有相关介绍.网上的博客大多也都写的一知半解,很粗糙,晦涩难懂.今天在几篇好的博文中,又学 ...

  2. STL(八)——向量vector

    向量Vector vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器. 简单理解为:向量Vector是一个能够存放任意类型的动态数组,可以动态改变大小. 常见形式为:ve ...

  3. 标准模板库(STL)之 vector 列传 (二)

    标准模板库(STL)之 vector 列传 两种搭配 vector 为空的判断 所能容纳的数据类型 push_back 一个新元素 resize 的两个重载 clear的含义 两个 vector 的相 ...

  4. 学习C++ - 向量(vector)!你今天努力了吗?

    一.向量的介绍 向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器. 与string相同, vector 同属于STL(Standard Template Lib ...

  5. c语言二维vector大小,vector作为二维数组

    vector本来就是可以用来代替一维数组的,vector提供了operator[]函数,可以像数组一样的操作,而且还有边界检查,动态改变大小. 这里只介绍用它来代替二维的数组,二维以上的可以依此类推. ...

  6. C++ 向量(vector) 的使用

    向量(vector)是什么 向量(vector)是属于STL(Standard Template Library, 标准模板库)中的一种随机访问数组的类型. 使用的时候需要使用#include < ...

  7. C++向量 vector动态数组

    需要包含头文件, #include  <vector>    using namespace std; vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所 ...

  8. java vector编程_Java编程开发中向量(Vector)及其应用

    要学习Java编程开发中向量及其应用方面的知识就要先了解什么是向量,向量是如何声明及初始化的,下面就让IT培训网专家来给大家详细介绍下如何认识向量及其使用方法吧! 关于向量的介绍: 向量 vector ...

  9. STL库:vector

    STL库:vector 文章目录 STL库:vector 1.STL库对vector的官方介绍 2.vecotr的常用接口 2.1 vector的构造函数 2.2 vector的迭代器与遍历操作 2. ...

  10. C++ STL函数库 vector(henu.hjy)

    我们需要明白vector这是个什么?? 答:通俗而言--一个长度根据所需自动改变的数组,同时还可以用于以邻接表的方式进行存储图 使用前提: 头文件#include <vector> 使用C ...

最新文章

  1. 二、StreamAPI
  2. Linux搭建Node.js环境
  3. pythonvim编辑教程_Pycharm学习教程(6) Pycharm作为Vim编辑器使用
  4. a1708硬盘转接口_资讯:希捷上架新款银河Exos系列机械硬盘,15000转+SAS协议
  5. java 继承类_java类的继承
  6. Ubuntu14.04部署CEPH
  7. Shell组件的返回码,0为成功,其他为失败.
  8. java一个引用多大_为什么Java 8为方法引用引入了一个新的“::”运算符?
  9. WPF中实现PropertyGrid的三种方式
  10. win10打开蓝牙_win10动态锁,只要你离电脑远一点,电脑就自动锁定
  11. c语言输出指定年份中所有的星期六,用C语言编写程序打印任意年份的日历
  12. sap的工作日历_ABAP-有关日期的SAP函数使用(日历)
  13. 关于开源的RTP——jrtplib的使用(2)
  14. 考早了!华为认证推出“一试双证”,IE直接补贴3000元
  15. 我的世界服务器皮肤显示不出来,我的世界怎么让皮肤显示,怎么没有皮肤显示不出来怎么办啊...
  16. MATLAB程序:BPSK/QPSK的调制与解调
  17. oracle 如何备份.bak,Oracle备份如何到异机还原
  18. matlab计算特征多项式
  19. 乡村振兴谱写新时代与新篇章
  20. 电子计算机技术文件检索,GB T 4967-1995_电子计算器通用技术条件_高清版_可检索.pdf-文档在线预览...

热门文章

  1. 关情纸尾-----Quartz2D-绘制富文本,绘制图片.
  2. 首次push本地代码到github上出现的问题及解决方案
  3. js学习小计6-慎用return false;
  4. silverlight 一些写法小计
  5. 演义群侠传(八)【bloom组件源码学习】
  6. NET-由于该控件目前不可见、未启用或类型不允许,因此无法将焦点移向
  7. PHP MySQL基础知识
  8. 戴尔游匣7559经常(大概半小时)断电,关机的解决办法
  9. 入门机器学习(四)--Logistic回归
  10. Git Branch Mode(分支模式)