美文网首页
vector的几种遍历方式

vector的几种遍历方式

作者: chanming | 来源:发表于2019-05-07 20:27 被阅读0次

        相信每一个C++程序员都使用过STL库的vector,那么遍历一个vector有那些方法呢?哪个遍历的速度最快。

        第一种,使用迭代器的方法访问。

    for(std::vector<T>::iterator it = v.begin(); it != v.end(); ++it)

    { /* std::cout << *it; ... */}

        第二种,是用数组下标进行访问

    for(std::vector<int>::size_type i = 0; i != v.size(); i++)

    { /* std::cout << v[i]; ... */}

        第三种,使用auto,这个需要C++11才支持。

    for(auto const& value: a) { /* std::cout << value; ... */}

        第四种,使用for each, 这个需要C++17才能够支持

    std::for_each(std::par_unseq, a.cbegin(), a.cend(), [](const auto& e) { /* do stuff... */ });

        那么,这四种当中,究竟哪一个速度最快呢?答案是第三第四种,因为求v.size()跟v.end()实际上也是需要一定时间的,而auto冒号写法的底层实现已经把这个数据预处理了。

    {

    auto && __range = range_expression ;

    auto __begin = begin_expr ;

    auto __end = end_expr ;

    for ( ; __begin != __end; ++__begin)

    { range_declaration = *__begin; loop_statement }

    }

        事实上,这几种方法的速度相差并没有多少,对于业务开发来说,代码的简洁跟封装才是更加重要的。所以,在C++11以上的版本,更推荐使用第三种写法,如果取出数据还需要进行某些操作,推荐使用第四种写法。

    相关文章

      网友评论

          本文标题:vector的几种遍历方式

          本文链接:https://www.haomeiwen.com/subject/oondoqtx.html