我是靠谱客的博主 大力薯片,最近开发中收集的这篇文章主要介绍Iterator 学习之迭代器函数操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本篇学习Iterator的迭代器函数操作,具体函数如下:

定义于头文件 <iterator>

advance

令迭代器前进给定的距离
(函数模板)

distance

返回两个迭代器间的距离
(函数模板)

begin开始迭代器
(函数模板)
end结束迭代器
(函数模板)

next

(C++11)

令迭代器自增
(函数模板)

prev

(C++11)

令迭代器自减
(函数模板)

代码示例1

advance我们知道list列表可以取头元素和尾元素,那如果要取中间元如果操作呢,因为它没有[i]也有没at(i)操作,那么使用advance函数就可以取到中间的任意元素,具体示例如下:

#include <iostream>
#include <iterator>
#include <list>

using namespace std;

int main()
{
    list<int> mylist{10,20,30,40,50,60,70,80,90,100};
    for(auto li = mylist.begin(); li != mylist.end(); ++li)
    {
        cout << *li << "t";
    }
    cout << "n";
    //取第5个无素
    list<int>::iterator it = mylist.begin();
    std::advance(it, 4);
    cout << "The five element in mylist is: " << *it << endl;

    list<int>::iterator it1 = mylist.begin();
    std::advance(it1, 6);
    cout << "The seven element in mylist is: " << *it1 << endl;
    *it1 = 90;
    for(auto li = mylist.begin(); li != mylist.end(); ++li)
    {
        cout << *li << "t";
    }
    cout << "n";
    cout << "Hello World!" << endl;
    return 0;
}

 代码示例2 distance取两个迭代器之间的距离

#include <iostream>
#include <iterator>
#include <vector>

using namespace std;

int main()
{
    list<int> mylist{10,20,30,40,50,60,70,80,90,100};
    std::list<int>::iterator first = mylist.begin();
    std::list<int>::iterator last = mylist.end();
    std::cout << "list   distance(first, last) = " << std::distance(first, last) << 'n';
    //std::cout << "list   distance(last, first) = " << std::distance(last, first) << 'n'; //list不能使用
    std::vector<int> vec{32, 15, 43, 25, 36};

    std::vector<int>::iterator vfirst = vec.begin();
    std::vector<int>::iterator vlast = vec.end();
    std::cout << "vector distance(first, last) = " << std::distance(vfirst, vlast) << 'n';
    std::cout << "vector distance(last, first) = " << std::distance(vlast, vfirst) << 'n';

    cout << "n";
    cout << "Hello World!" << endl;
    return 0;
}

 代码示例3 begin开始迭代器

#include <iostream>
#include <iterator>
#include <vector>

using namespace std;

int main()
{
    //3.begin
    std::vector<int> vec{32, 15, 43, 25, 36};
    std::vector<int>::iterator iter2 = vec.begin();
    //取vector第2个元素
    ++iter2;
    std::cout << "vector iter2 = " << *iter2 << 'n';

    cout << "Hello World!" << endl;
    return 0;
}

 

代码示例4 end结束迭代器

#include <iostream>
#include <iterator>
#include <vector>

using namespace std;

int main()
{
    std::vector<int> vec{32, 15, 43, 25, 36};
    //取vector最后一个元素
    std::vector<int>::iterator iter = vec.begin();
    while(iter != vec.end())
    {
        ++iter;
        if(iter == vec.end())
        {
            //取最后一个元素
            --iter;
            std::cout << "vector iter = " << *iter << 'n';
            break;
        }
    }


    cout << "n";
    cout << "Hello World!" << endl;
    return 0;
}

 

最后

以上就是大力薯片为你收集整理的Iterator 学习之迭代器函数操作的全部内容,希望文章能够帮你解决Iterator 学习之迭代器函数操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部