第三章 STL和基本数据结构
3.1 容器
1.顺序式容器
2.关联式容器
3.1.1 vector
1.定义
vector<int>a; 默认初始化,a为空
vector<int>b(A); 用A定义b
vector<int>a(n); a有n个值为0的元素
vector<int>a(a,n); a个值为n的元素
vector<string>a(10,"null"); 10个值为null的元素
vector<string>vec(10,"hello"); 10个值为hello的元素
vector<string>b(a.begin(),a.end()); b是a的复制
struct point{int x,y;}; vector<point>a; a用来存坐标
##多维数组 vector<int>a[MAXN];
2.常用操作
a.push_back(n); 在尾部添加元素n
int size=a.size(); 查询元素个数
bool isEmpty=a.empty(); 判断是否为空
cout<<a[0]; 打印第一个元素
a.insert(a.begin()+i,k); 在第i个元素前面插入k
a.insert(a.end(),m,n); 尾部插入m个值为n的元素
a.pop_back(); 删除尾部元素
a.erase(a.begin()+i,a.begin()+j); 删除区间[i,j-1]的元素
a.erase(a.begin()+2); 删除第三个元素
a.resize(n); 数组大小变为n
a.clear(); 清空
reverse(a.begin(),a.end()); 翻转a数组
sort(a.begin(),a.end()); 从小到大排序
例题
hdu 4841
http://acm.hdu.edu.cn/showproblem.php?pid=4841
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
vector<int>table;
int n,m;
int main()
{
while(cin>>n>>m)
{
table.clear();
for(int i=0;i<2*n;i++) table.push_back(i);
int pos=0;
for(int i=0;i<n;i++)
{
pos=(pos+m-1)%table.size();
table.erase(table.begin()+pos);
}
int j=0;
for(int i=0;i<2*n;i++)
{
if(!(i%50)&&i) cout<<endl;
if(j<table.size()&&i==table[j])
{
j++;
cout<<"G";
}
else cout<<"B";
}
cout<<endl<<endl;
}
return 0;
}
|