vector
1.定义
-
定义int型数组
例子 说明 vectora 默认初始化,a为空 vectorb(a) 用a定义b vectora(100) a有100个值为6的元素 vectora(100,6) 100个值为6的元素 -
定义string型数组
例子 说明 vectora(10,“null”) 10个值为null的元素 vectorvec(10,“hello”) 10个值为hello的元素 vectorb(a.begin(),a.end()) b是a的复制 -
定义结构型数组
例子 说明 struct point{int x,y};
vector aa用来存坐标 -
常用操作
功能 例子 说明 赋值 a.push_back(100) 在尾部添加元素 元素个数 int size=a.size() 元素个数 是否为空 bool Empty=a.empty() 判断是否为空 打印 cout<<a[0]<<endl 打印第一个元素 中间插入 a.insert(a.begin() + i, k) 在第i个元素前面插入k 尾部插入 a.push_back(8) 在尾部插入值为8的元素 尾部插入 a.insert(a.end(), 10 , 5) 在尾部插入10个值为5的元素 删除尾部 a.pop_back() 删除末尾元素 删除区间 a.erase(a.begin() + i,a.begin() + j) 删除区间[i, j-1]的元素 删除元素 a.erase(a.begin() + 2) 删除第3个元素 调整大小 a.resize(n) 将数组大小调整为n 清空 a.clear() 清空 反转 reverse(a.begin() ,a.end()) 用函数reverse()反转数组 排序 sort(a.begin() ,a.end()) 用函数sort()排序从小到大
2.关于vector的使用示例
Problem Description()(hdu 4841)
圆桌上围坐着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
GBBG
BGGB
Source
#include<vector>
#include<iostream>
using namespace std;
int main()
{
int n, m;
while (cin >> n >> m)
{
int size = 2 * n;
vector<int>pop(size);
for (int i = 0; i < 2 * n; i++)
pop[i] = i;//初始化操作
int flag = 0;
while (pop.size() != n)
{
flag = (flag + m - 1) % pop.size();
pop.erase(pop.begin() + flag);
}//删除对应的坏人
//按照需要的格式进行输出
for (int i = 0, j = 0; i < 2 * n; i++)
{
if (j<n&&pop[j] == i)
{
cout << "G";
j++;
}
else
cout << "B";
if (i != 0 && (i+1) % 50 == 0)
cout << endl;
}
cout << endl << endl;
}
}