• c++第十八天


    p105~p108:

    1、迭代器与数组的不同:迭代器的索引值必须是无符号类型,数组的索引无此要求。

    2、使用数组的时候编译器一般会把它转化为指针。

    3、auto ia2(数组名);的结果是:获得一个指向ia的第一个元素的指针。

    4、decltype(数组名) ia3;的结果是:获得一个数组。

    5、指针与迭代器类似,两个指针相减(参与运算的指针必须是指向用一数组)的结果是一种名为有符号 ptrdiff_t的标准库类型。

    6、标准库函数 begin和 end。示例:

    #include<iterator>
    using std::begin;
    using std::end;
    for (int *b = begin(arr); b != end(arr); ++b) {
        cout << *b << endl;
    }

    7、只要指针指向的是数组中的元素,都可以执行下表运算。例如:int *p = &ia[2];则 p[0]等价于ia[2],p[k]等价于 *(p+k)。

    8、遍历数组的几种方式。


    (***)

    遇到的问题

    1、+=的优先级比 - 的低。p1 += p2 - p1; 等价于 p1 = p1 + (p2 - p1);
    验证方法:(p1 += p2) - p1;非法。指针不能够相加。

    练习 3.34

    功能:将p2的值赋给p1

    当p1是const point时,该操作是非法的。

    练习 3.35

    #include<iostream>
    using std::cout;
    using std::endl;
    int main()
    {
        int arr[10];
        int *e = &arr[10];
        for (int *b = arr; b != e; ++b) {
            *b = 0;
        }
        // 验证
        for (int x: arr) {
            cout << x << endl;
        }
        return 0;
    }

    练习3.36

    1

    #include<iostream>
    using std::cout;
    using std::endl;
    #include<iterator>
    using std::begin;
    using std::end;
    int main()
    {
        // 默认相同类型
        int arr1[10];
        int arr2[7];
        
        // 比较索引范围
        int size_arr1 = end(arr1) - begin(arr1);
        int size_arr2 = end(arr2) - begin(arr2);
        if (size_arr1 != size_arr2) {
            cout << "Differen. " << endl;
            return 0;
        }
        // 比较数组内容
        for (int i = 0; i != size_arr1; ++i) {
            if (arr1[i] != arr2[i]) {
                cout << "Different. " << endl;
                return 0;
            }
        }
        cout << "Same arr. " << endl;
        return 0;
    }

     2

    #include<iostream>
    using std::cout;
    using std::endl;
    #include<vector>
    using std::vector;
    int main()
    {
        vector<int> ivec{1, 2, 3};
        vector<int> ivec2{1, 2, 3};
        if (ivec == ivec2) {
            cout << "Same vector. " << endl;
        } else {
            cout << "Different. " << endl;
        }
        return 0;
    }
  • 相关阅读:
    Eclipse显示行号
    Eclipse中让Scala缩进变为4
    阿里云Maven仓库
    Eclipse格式化整个项目
    Spring拦截器
    Spring配置redis及使用
    Java加密数据库
    Eclipce远程调试
    服务器部署Java Web及微信开发调试
    基本MVC2模式创建新闻网站
  • 原文地址:https://www.cnblogs.com/xkxf/p/6414800.html
Copyright © 2020-2023  润新知