当前位置: 首页 > news >正文

个人免费域名空间建站竞价网官网

个人免费域名空间建站,竞价网官网,做产品批发的网站,建立一个网站用英语怎么说在C03/98中&#xff0c;不同的容器和数组&#xff0c;遍历的方法不尽相同&#xff0c;写法不统一&#xff0c;也不够简洁&#xff0c;而C11基于范围的for循环以统一&#xff0c;简洁的方式来遍历容器和数组&#xff0c;用起来更方便了。 for循环的新用法 #include <iostre…

        在C++03/98中,不同的容器和数组,遍历的方法不尽相同,写法不统一,也不够简洁,而C++11基于范围的for循环以统一,简洁的方式来遍历容器和数组,用起来更方便了。

for循环的新用法

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> arr = {1, 2, 3, 4, 5};

    for(auto it = arr.begin(); it != arr.end(); it++)
    {
        cout << *it << endl;
    }

    return 0;
}

上面借助auto关键字,省略了迭代器的声明。

        现在,在C++11中终于有了基于范围的for循环。

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    vector<int> arr = {1, 2, 3, 4, 5};

    for(auto n : arr)
    {
        cout << n << endl;
    }

    return 0;
}

        在上面的基于范围的for循环中,n表示arr中的一个元素,auto则是让编译器自动推导出n的类型。在这里,n的类型将被自动推导为vector中的元素类型int。

        在n的定义之后,紧跟一个冒号(:),之后直接写上需要遍历的表达式,for循环将自动以表达式返回的容器为范围进行迭代。

对map的遍历方法

#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;

int main()
{
    map<string, int> mymap = {{"1", 1}, {"2", 2}, {"3", 3}, {"4", 4}};

    for(auto& it :mymap)
    {
        cout << it.first << "\t" << it.second << endl;
    }

    return 0;
}

        这里需要注意两点:

        1、for循环中it的类型是std::pair。因此,对于map这种关联性容器而言,需要使用it.first或者it.second来提取键值。

        2、aut自动推导出的类型是容器中的value_type,而不是迭代器。

使用细节

#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <set>
using namespace std;

int main()
{
    set<int> myset = {1, 2, 3, 4, 5};

    for(auto& it : myset)
    {
        cout << it++ << endl;
        ///arr.cpp:26:13: error: increment of read-only reference ‘it’
    }

    return 0;
}

        在该例子中使用了auto &定义了set<int>中元素的引用,希望能够在循环中对set的值进行修改,但是set的内部元素是只读的,因此,for循环中的auto &会被推导为const int &。

        同样的细节也会出现在map的遍历中。基于范围的for循环中的std::pair引用,是不能够修改first的。

#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <set>
using namespace std;

vector<int> myarr = {1, 2, 4, 5};

vector<int>& get_vecotr()
{
    printf("get vector....\n");
    return myarr;
}


int main()
{
    for(auto it : get_vecotr())
    {
        cout << it << endl;
    }

    return 0;
}

输出结果:

        从上面的结果中可以看到,不论基于范围的for循环迭代了多少次,get_vector()只在第一次迭代之前被调用。

        因此,对于基于范围的for循环而言,冒号后面的表达式只会被执行一次。

http://www.15wanjia.com/news/36915.html

相关文章:

  • 做赌博网站会被判多久网站制作策划
  • 德清县住房和城乡建设局网站深圳网络营销和推广渠道
  • 各类网站建设站长工具查询
  • 辽宁城乡建设厅网站百度收录网站多久
  • 杭州广告设计公司西安百度快照优化
  • win2003 iis配置网站域名停靠网页app推广大全
  • 郑州哪家公司做网站免费大数据分析网站
  • 网络营销有哪些推广的方法如何做谷歌优化
  • 服装网站建设公司哪家好竞价排名的定义
  • 锦州滨海新区城市建设规划网站可口可乐网络营销策划方案
  • 汕头模板建站软件nba在线直播免费观看直播
  • 政府网站源码下载网站老域名跳转到新域名
  • 虚拟主机 网站镜像站内推广方式有哪些
  • 网站制作公司北京网站建设公司锦绣大地seo
  • 佛山企业网站排名优化北京刚刚传来特大消息
  • 用vs做的网站怎么打开优化课程体系
  • 如何做日本语网站站长工具seo综合查询下载
  • 做vr网站线上宣传渠道和宣传方式
  • 网站开发的成本百度排行榜小说
  • 网站管理制度建设的情况百度爱采购排名
  • 如何保护自己的网站西安网站建设推广
  • 网络广告营销环境发生了哪些变化佛山百度网站排名优化
  • 私人公司怎么做网站百度app官网下载安装
  • 软件商城下载安卓版整站优化网站
  • 小程序网站开发怎么样网络seo哈尔滨
  • 贵州省和城乡建设厅官方网站seo模拟点击工具
  • 想自己做点飘纱素材到网站上买做高端网站公司
  • 12380网站建设存在的问题app拉新佣金排行榜
  • 用vs做音乐网站测试自己适不适合做销售
  • 苏州网站建设kgu云计算培训