A题笔记(9)

No.2283

No.1387

 

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(...): 编译时会错误。

 

 

posted @ 2014-01-14 11:27  阿祖叔叔  阅读(184)  评论(0编辑  收藏  举报