vector<vector<char> > before, after;
可以创建一个容器的容器,注意 char 后的两个 “>” ,之间必须有一个空格,否则会被当做是右移操作 “>>” 来处理。
如何向一个容器的容器传值呢,可以参照以下方法:
int n; cin>>n; vector<vector<char> > before; vector<char> oneline; char tmp; int i, j; for(i=0; i<n; i++) { oneline.clear(); for(j=0; j<n; j++) { cin>>tmp; oneline.push_back(tmp); } before.push_back(oneline); }
每次使用容器 oneline 时,必须对其进行清空 oneline.clear(),一行输入完成后便可以将其整个传入容器的容器中。
如果要将容器作为参数传递给函数,不能直接将容器作为变量,而是选择传递 指向容器中需要处理的元素的迭代器来传递容器:
vector<vector<char> >::iterator b=before.begin(), a=after.begin(); check1(b, a, n);
int check1(vector<vector<char> >::iterator before, vector<vector<char> >::iterator after, int n) { int i, j; for(i=0; i<n; i++) for(j=0; j<n; j++) if(before[i][j]!=after[j][n-1-i]) return 0; return 1; }
迭代器在函数中完全可以当做是容器本身来使用。
switch (lk) { case 0: case 1: case 2: cout<<"You are a Foolish Man"; break; case 3: cout<<"You are on a Killing Spree"; break; default: cout<<"You are Beyond Godlike (Somebody kill him!)"; break; }
switch 中的每一个 case 标号的值都必须是一个 “常量表达式”
形如: case check1(...): 编译时会错误。