c++ 容器定义的几种类型

size_type ;无符号整形,足够大存储容器数据。

iterator

const_iterator

reverse_iterator iterator that addresses elements in reverse order

const_reverse_iterator

我们可以有2中方法将vector中的元素反序输出:

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

int main()
{
    int a[]={1,2,3};
    vector<int> vec(a,a+sizeof(a)/sizeof(int));

    for(vector<int>::reverse_iterator it=vec.rbegin();it!=vec.rend();it++)
        cout<<*it<<ends;
    cout<<endl;
    for(vector<int>::iterator it=vec.end()-1;it>=vec.begin();it--)
        {
            cout<<*it<<ends;
            if(it==vec.begin())
                break;
    }
    cout<<endl;

}

注意r.begin()返回的类型是reverse_iterator,it为++,跟正向操作相同,向前++。

还有一点注意的是当it==vec.begin()一定要退出,否则会产生错误//vector iterator not decremental ,vec.begin()不能再减了。

上面的程序可以用2句代码搞定:

for_each(vec.begin(),vec.end(), {cout<<i<<ends; } );

for_each(vec.rbegin(),vec.rend(),{cout<<i<<ends;});

迭代器(iterator)转逆向迭代器(reverse_iterator),只需要把迭代器转入逆向迭代器的构造函数即可;逆向迭代器转迭代器,调用逆向迭代器的base成员函数即可

#include <iostream>
#include <list>
#include <iterator>
#include <algorithm>
using namespace std;

int main()
{
    list<int> coll;

    for(int i = 1; i <= 9; ++i)
    {
        coll.push_back(i);
    }

    list<int>::iterator pos;
    pos = find(coll.begin(), coll.end(), 5);

    cout << "pos: " << *pos << endl;

    list<int>::reverse_iterator rpos(pos);
    cout << "rpos: " << *rpos << endl;

    list<int>::iterator rrpos;
    rrpos = rpos.base();

    cout << "rrpos: " << *rrpos << endl;

    return 0;
}

difference_type signed integral type large enough to hold the difference,可能为负.

还有常见的几种类型:

value_type 元素类型 element type

reference element's lvalue type;synonym for value_type &

const_reference element's cosnt lvalue type;same as const value_type&
原文链接: https://www.cnblogs.com/youxin/archive/2012/07/19/2599878.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/55925

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午6:56
下一篇 2023年2月9日 上午6:57

相关推荐