zoukankan      html  css  js  c++  java
  • std(12)判断容器的迭代器是否是随机访问迭代器

    1.随机访问迭代器的意思是可以在该迭代器指向的位置基础上向前或者向后移动n的位置,还能获取到容器的数据。

    2.之所以要去判断一个容器的迭代器是否是随机访问迭代器,是因为stl系统提供的很多算法都需要容器的迭代器必须是随机访问迭代器才能使用。

    比如:std::sort()算法对于vector是可用的,list就不可用。list容器如果需要排序的话必须使用list自身内部实现的sort方法。

    std::list<int> list;
    list.push_back(10);
    list.push_back(20);
    list.push_back(30);
    list.push_back(40);

    list.sort();

    std::sort(list.begin(),list.end());//报错

    3.并且一个容器的迭代器如果不是随机访问迭代器的话,它往往也不支持使用[]和at来通过下标访问容器中的任意一个元素。

    4.在判断的时候我们可以通过判断该容器的迭代器是否支持”+n“的操作来判断容器的迭代器是否是随机访问迭代器。vector的迭代器支持随机访问,list的迭代器不支持

    std::list<int> list;
    list.push_back(10);
    list.push_back(20);
    list.push_back(30);
    list.push_back(40);
    int a = list[2];//报错
    std::list<int>::iterator it = list.begin()+2;//报错

    std::vector<int> vec;
    vec.push_back(10);
    vec.push_back(20);
    vec.push_back(30);
    vec.push_back(40);

    int a1 =vec[2];

    std::vector<int>::iterator it1 = vec.begin()+2;

  • 相关阅读:
    css圆,背景,img填满等样式
    MySQL双日志
    MySQL分层和查询数据的流程
    ZJNU 2345
    ZJNU 2342
    ZJNU 2340/2341/2343
    ZJNU 2235
    ZJNU 2226
    ZJNU 2212
    ZJNU 2208
  • 原文地址:https://www.cnblogs.com/maycpou/p/14328922.html
Copyright © 2011-2022 走看看