c++ primer第五版(中文)习题答案 第三章第六节-多维数组

来源:互联网 发布:淘宝话费代理怎么做 编辑:程序博客网 时间:2024/04/30 11:07

本博客知识记录自己学习中的笔记或者记录,如果有错误欢迎大家纠正。
转载声明出处

多维数组 上数组 的数组
在使用范围for语句处理多维数组,除了最内层的循环外,其他所有循环的控制变量都应该使用引用类型。

int *ip[4] 表示 整形指针的数组
int (*ip) 表示 指向含有4个整数的数组

练习 3.43 编写3个不同版本的程序,令其均能输出ia的元素。
版本1 使用范围for语句管理迭代过程,
版本2 和版本3 都使用普遍版本的for语句,
其中版本2 要求用下标运算符,版本3要求用指针,此外,在所有3个版本的程序中都要直接写出数据类型,而不能用类型别名,auto 关键字或decltype关键字。

#include <iostream>#include <vector>int main(){    int ia[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};    //使用范围for    for (int (&k)[4] : ia )    {        for (int j : k )        {            std::cout << j << " ";        }    }    std::cout << std::endl;    for (size_t i = 0; i != 3; i++)    {        for (size_t j = 0; j != 4;j++)        {            std::cout << ia[i][j] << " ";        }    }    std::cout << std::endl;    for (int(*p)[4] = ia; p != ia + 3;++p)    {        for (int *q = *p; q != *p + 4;++q)        {            std::cout << *q << " ";        }    }    system("pause");    return 0;}

练习 3.44 改写上一个练习中的程序,使用类别别名来代替循环控制变量的类型。

#include <iostream>#include <vector>using namespace std;int main(){    int ia[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};    using int_array = int[4];    for (int_array& p : ia)        for (int q : p)            cout << q << " ";    cout << endl;    for (size_t i = 0; i != 3; ++i)        for (size_t j = 0; j != 4; ++j)            cout << ia[i][j] << " ";    cout << endl;    for (int_array* p = ia; p != ia + 3; ++p)        for (int *q = *p; q != *p + 4; ++q)            cout << *q << " ";    cout << endl;    system("pause");    return 0;}

练习3.45 在次改写程序,使用auto关键字。

#include <iostream>#include <vector>using namespace std;int main(){    int ia[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};    for (auto& p : ia)        for (int q : p)            cout << q << " ";    cout << endl;    for (size_t i = 0; i != 3; ++i)        for (size_t j = 0; j != 4; ++j)            cout << ia[i][j] << " ";    cout << endl;    for (auto p = ia; p != ia + 3; ++p)        for (int *q = *p; q != *p + 4; ++q)            cout << *q << " ";    cout << endl;    system("pause");    return 0;}
0 0
原创粉丝点击