一:
vector的基本成员及用法;
#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> v;
bool cmp(int x,int y) //vector的sort排序 ;
{
return x>y;
}
int main()
{
int n,k;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("%d",&k);
v.push_back(k); //从尾部输入一个元素;
}
//v.clear();清空vector
//v.size() vector的大小
//reverse(v.begin(),v.end()); 反转vector
//v.insert(v.begin()+i,p); 第i个位置后插入p
//v.insert(v.end()-i,p); 倒数第i个位置后插入p
//v.empty(); 判断vector是否为空
//v.pop_back(); 移除一个尾部元素
//v.erase(v.begin()+i); 删除第i个元素
//sort(v.begin(),v.end(),cmp); sort排序
//vector<int>::iterator it; //迭代器
//for(it=v.begin();it!=v.end();it++) 两种方式输出,同下
// cout<<*it<<endl;
for(int i=0;i<v.size();i++)
{
//cout<<v.at(i)<<endl; 输出,下一行方式也可以
printf("%d\n",v.at(i));
}
}
return 0;
}
二:
vector创建二维数组的一般形式;
#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> v[1010]; //vector创建二维数组
int main()
{
int n,k;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&k);
v[i].push_back(k);
}
}
//for(int i=0;i<n;i++)
// printf("%d\n",v[i].size());
for(int i=0;i<n;i++) //第一维表示行
{
for(int j=0;j<v[i].size();j++) //第二维动态表示列
{
if(j>0) printf(" ");
printf("%d",v[i][j]);//或者v[i].at(j)
}
printf("\n");
}
}
return 0;
}
三:
vector中的sort排序,以及二分的迭代使用;
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#define max_n 10010
using namespace std;
typedef long long LL;
int main()
{
int n,m,k,p=1;
while(scanf("%d %d",&n,&m) && (n+m))
{
vector<int> v;
for(int i=0;i<n;i++)
{
scanf("%d",&k);
v.push_back(k);
}
sort(v.begin(),v.end());
printf("CASE# %d:\n",p++);
while(m--)
{
scanf("%d",&k);
// bool flag=false;
// vector<int>::iterator it;
// for(it=v.begin();it!=v.end();it++)
// {
// if(*it==k)
// {
// flag=true;
// break;
// }
// }
// int ans=lower_bound(v.begin(),v.end(),k)-v;
std::vector<int>::iterator low;
low=std::lower_bound(v.begin(),v.end(),k);
if(v[low-v.begin()]==k) printf("%d found at %d\n",k,low-v.begin()+1);
else printf("%d not found\n",k);
}
}
return 0;
}
vector + 二分:
题目:HPU 1400
#include<bits/stdc++.h>
using namespace std;
vector<int> v;
int main(){
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int t, q;
scanf("%d", &t);
while(t--){
v.clear();
vector<int>::iterator it;
scanf("%d", &q);
while(q--){
int x, ch;
scanf("%d %d",&ch, &x);
if(ch == 1) {
it = lower_bound(v.begin(), v.end(), x);
v.insert(it, x);
}
else {
if(v.size() < x) printf("-1\n");
else printf("%d\n", v[v.size() - x]);
}
}
}
return 0;