STL之vector UVa101

  1 #include <iostream>
  2 #include <cstring>
  3 #include <cstdio>
  4 #include <algorithm>
  5 #include <vector>
  6 
  7 using namespace std;
  8 
  9 vector<int> arr[30];
 10 int x,y,n;
 11 void find_blocks(int w)
 12 {
 13     for(x=0;x<n;x++)
 14     {
 15         for(y=0;y<arr[x].size();y++)
 16         {
 17             if(arr[x][y]==w)
 18                 return ;
 19         }
 20     }
 21 }
 22 
 23 void guiwei(int w)
 24 {
 25     find_blocks(w);
 26     for(int i=arr[x].size()-1;i>y;i--)
 27     {
 28         arr[arr[x][i]].push_back(arr[x][i]);
 29         arr[x].pop_back();
 30     }
 31 }
 32 
 33 void yidong(int w,int r)
 34 {
 35     find_blocks(r);
 36     int tmpx=x;
 37     find_blocks(w);
 38     for(int i=y;i<arr[x].size();i++)
 39     {
 40         arr[tmpx].push_back(arr[x][i]);
 41     }
 42     int tt=arr[x].size();
 43     for(int i=y;i<tt;i++)
 44     {
 45         arr[x].pop_back();
 46     }
 47 }
 48 
 49 int main()
 50 {
 51     cin>>n;
 52     for(int i=0;i<n;i++)
 53     {
 54         arr[i].push_back(i);
 55     }
 56     string a,c;
 57     int b,d;
 58     while(cin>>a&&a!="quit")
 59     {
 60         cin>>b>>c>>d;
 61         find_blocks(b);
 62         int tmpx=x;
 63         find_blocks(d);
 64         if(x==tmpx)
 65             continue;
 66         if(a=="move")
 67         {
 68             guiwei(b);
 69             int v=arr[x][y];
 70             arr[x].pop_back();
 71             if(c=="onto")
 72             {
 73                 guiwei(d);
 74             }
 75             else if(c=="over")
 76             {
 77                 find_blocks(d);
 78             }
 79             arr[x].push_back(v);
 80         }
 81         else if(a=="pile")
 82         {
 83             if(c=="onto")
 84             {
 85                 guiwei(d);
 86                 yidong(b,d);
 87             }
 88             else if(c=="over")
 89             {
 90                 yidong(b,d);
 91             }
 92         }
 93     }
 94     for(int i=0;i<n;i++)
 95     {
 96         cout<<i<<":";
 97         for(int t=0;t<arr[i].size();t++)
 98         {
 99             cout<<" "<<arr[i][t];
100         }
101         cout<<endl;
102     }
103     return 0;
104 }
View Code

vector

vector可以理解为可变长度的数组

可用函数

size();  //返回大小

resize();  //重新定义大小

push_back();  //在最后插入一个元素

pop_back();  //在最后删除一个元素

erase(arr.begin()+n);  //删除第n+1个元素

erase(arr.begin(),arr.begin()+3);  //删除前三个元素

clear();  //清空

empty();  //判断是否为空

insert(it,2,300);  //在it位置上插入2个300,it为vector<int>::iterator it

vector<int> arr[100];  //类似于二维数组,第二维长度可以发生变化

posted @ 2015-08-03 15:29  相儒以沫  阅读(131)  评论(0编辑  收藏  举报