zoukankan      html  css  js  c++  java
  • Chapter3:字符串、向量和数组

    • C++11新特性:范围for(range for)
    1 for (declaration: expression)
    2     statement

    vector和数组都是对象的集合,而引用不是对象。

    vector对象可以高效地增长,在定义vector对象的时候设定其大小也就没什么必要了,事实上如果这么做性能可能更差。

    • C++11新特性:cbegin() & cend()

    为了便于专门得到const_iterator类型的返回值,C++11新标准引入了两个新函数,分别是cbegin() 和cend().

    • 如何理解复杂的数组声明?
    1 int *ptrs[10]; //ptrs是含有10个整型指针的数组
    2 int &refs[10] = /*?*/; //错误,不存在引用的数组
    3 int (*Parray) [10] = &arr; //Parray指向一个含有10个整数的数组
    4 int (&arrRef) [10] = arr; //arrRef引用一个含有10个整数的数组

    对于Parray来说,从右向左理解就不太合理了。因为数组的维度是紧跟着被声明的名字的,所以就数组而言,由内向外阅读要比从右向左好多了。

    首先是圆括号里面的,*Parray意味着Parray是个指针;

    接下来观察右边,Parray是个指向大小为10的数组的指针;

    最后观察左边,知道数组中的元素是int。

    1 int ia[5];
    2 auto ia2(ia); //ia2是一个整型指针
    3 decltype(ia) ia3; //ia3是一个含有10个整数的数组
    • C++11新特性:标准库函数begin() 和end()

    为了让指针的计算更安全、简单,C++11新标准引入了两个名为begin和end的函数,用于计算数组的迭代器。

    • 多维数组的访问方式
     1     int ia[3][4];
     2     for (auto p = ia; p != ia + 3; ++p)
     3     {
     4         for (auto q = *p; q != *p + 4; ++q) 
     5         {
     6             //do something
     7         }
     8     }
     9 
    10     for (auto p = begin(ia); p != end(ia); ++p)
    11     {
    12         for (auto q = begin(*p); q != end(*p); ++q)
    13         {
    14             //do something
    15         }
    16     }
  • 相关阅读:
    sleuth使用说明(入门)
    git学习
    rancher中级(二)(rancher中添加证书及操作虚拟主机)
    rancher中级(一)(rancher的存储,网络)
    rancher初级(搭建+基本操作+web应用部署)
    Docker学习笔记
    面试-框架篇
    面试-核心篇
    面试-基础篇
    「译」JUnit 5 系列:扩展模型(Extension Model)
  • 原文地址:https://www.cnblogs.com/wangyanphp/p/5770873.html
Copyright © 2011-2022 走看看