#include<iostream>
#include<stdio.h>
//#include<stdlib.h>
//#include<string.h>
//#include<string>
//#include<math.h>
#include<algorithm>
//#define inttochar(x) ('0'+x)
//#define chartoint(x) (x-'0')
//#include<stack>
//#include<queue>
#include<vector>
using namespace std;
bool comp(int &a,int &b){
  return a>b;
}
int main()
{

  return 0;
}


//获取一整行:
        string s;
        getline(cin,s);

//获取未知个数
        while(scanf("&d",&n)!=EOF)
//pow和sqrt在math库中

char -> int
    #define chartoint(x) (x-'0')
    cout<<chartonumber(c)+1;
int -> char
    #define inttochar(x) ('0'+x)
    cout<<(char)inttochar(2);
//初始化数组B为0 or -1
memset(B,0,sizeof(B));
//字母大小写转换
cout<<(char)toupper('a'); A
cout<<(char)tolower('A'); a

//头文件

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<string>
#include<math.h>
#include<algorithm>
  //倒序
  bool comp(int &a,int &b){
  return a>b;
  }
  sort(a,a+5,comp);
#define inttochar(x) ('0'+x)
#define chartoint(x) (x-'0')
#include<queue>// 队列
#include<stack>//栈
using namespace std;

//定义方式

stack<int>  s;
queue<int>  q;

//栈:
s.empty()//如果栈为空返回true,否则返回false  
s.size()//返回栈中元素的个数  
s.pop()//删除栈顶元素但不返回其值  
s.top()//返回栈顶的元素,但不删除该元素  
s.push(X)//在栈顶压入新元素 ,参数X为要压入的元素

stack<int> s;
s.push(1);
cout<<s.top();
s.pop();
if(s.empty())
cout<<1;

//队列:
q.empty()// 如果队列为空返回true,否则返回false  
q.size() // 返回队列中元素的个数  
q.pop()  //删除队列首元素但不返回其值  
q.front()  // 返回队首元素的值,但不删除该元素  
q.push(X) //在队尾压入新元素 ,X为要压入的元素
q.back() //返回队列尾元素的值,但不删除该元素  

 queue<int> q;
 q.push(1);
 q.push(2);
 cout<<q.back();

#include <vector>

vector<int> a ;  //声明一个int型向量a
vector<int> a(10) ;  //声明一个初始大小为10的向量
vector<int> a(10, 1) ; //声明一个初始大小为10且初始值都为1的向量
vector<int> b(a) ; //声明并用向量a初始化向量b
vector<int> b(a.begin(), a.begin()+3) ; //将a向量中从第0个到第2个(共3个)作为向量b的初始值

// 除此之外, 还可以直接使用数组来初始化向量:
int n[] = {1, 2, 3, 4, 5} ;
vector<int> a(n, n+5) ;  //将数组n的前5个元素作为向量a的初值

元素的输入和访问可以像操作普通的数组那样, 用cin>>进行输入,
cout<<a[n]这样进行输出:

尾插元素: V.push_back(a[i]);
插入元素:  V.insert(V.begin()+i,a); //在第i+1个元素前面插入a
删除元素:vec.erase(vec.begin()+i); //删除第i+1个元素
求vector的长度:V.size();
a.empty() //判断向量是否为空
交换 - swap
        b.swap(a) ;//a向量与b向量进行交换
sort(V.begin(),V.end());//排序方法

vector<int> a;
  int value;
  while(scanf("%d",&value)){
    if(value==-1)
      break;
    a.insert(a.begin(),value);
  }
  //两种遍历方式,既可以像数组一样
  for(int i=0;i<a.size();++i){
    if(i==3)
      a[i]=3;
  }
  vector<int>::iterator it;
  for(it=a.begin();it!=a.end();it++){
    cout<<*it<<endl;
  }


//二维向量
vector< vector<int> > b(10, vector<int>(5));
 //创建一个10*5的int型二维向量
vector< vector<int> > b(10, vector<int>(5, 0)) ;
   //对部分数据进行输入
  cin>>b[1][1] ;
  cin>>b[2][2] ;
  cin>>b[3][3];

   //全部输出
   int m, n ;
   for(m=0; m<b.size(); m++)           //b.size()获取行向量的大小
   {
       for(n=0; n<b[m].size(); n++)    //获取向量中具体每个向量的大小
           cout<<b[m][n]<<" " ;
       cout<<"\n" ;
  }