迭代器的使用

参考:
http://blog.csdn.net/qq_23100787/article/details/51388163
STL中的迭代器有五种类型,不同的容器可支持不同的迭代器
1.vector,支持随机迭代器

#include<iostream>
#include<vector>
#include<stdlib.h>

using namespace std;

int main()
{
    vector<char> charvector;
    for (int x = 0; x < 10; ++x)
        charvector.push_back(65 + x);
    for (int x = 0; x < charvector.size(); ++x)
    {
        vector<char>::iterator start = charvector.begin();
        charvector.erase(start);
        vector<char>::iterator iter;
        for (iter = charvector.begin(); iter != charvector.end(); iter++)
        {
            cout << *iter;
        }
        cout << endl;
    }
    cout << endl;
    vector<char>::iterator iter1=charvector.begin();;
    //iter1 += 2;//vector支持随机迭代器,可递增n位或递减n位
    //cout << *iter1;
    cout << iter1[2];//同上两行代码得到的结果一样
    cout << endl;

    system("pause");
    return 0;
}

2.deque,支持随机迭代器

#include<iostream>
#include<deque>
#include<stdlib.h>

using namespace std;
//deque也支持随机迭代器
int main()
{
    deque<char> chardeque;
    for (int x = 0; x < 10; x++)
        chardeque.push_front(65 + x);
    for (int x = 0; x < chardeque.size(); x++)
    {
        deque<char>::iterator start = chardeque.begin();
        chardeque.erase(start);
        deque<char>::iterator iter;
        for (iter = chardeque.begin(); iter != chardeque.end(); iter++)
        {
            cout << *iter;
        }
        cout << endl;
    }

    system("pause");
    return 0;
}

3.list,支持双向迭代器

#include<iostream>
#include<list>
#include<stdlib.h>

using namespace std;
//list并不支持随机迭代器,支持双向迭代器,不可递增或递减n位
int main()
{
    list<char> charlist;
    for (int x = 0; x < 10; x++)
        charlist.push_front(65 + x);

    list<char>::iterator iter;
    for (iter = charlist.begin(); iter != charlist.end(); iter++)
    {
        cout << *iter;
    }
    cout << endl;
    list<char>::iterator start = charlist.begin();
    charlist.insert(++start, 5, 'X');
    for (iter = charlist.begin(); iter != charlist.end(); iter++)
    {
        cout << *iter;
    }
    cout << endl;

    list<char>::iterator iter1=--charlist.end();//list容器提供双向迭代器,可前置自减或后置自减
    cout << *iter1;

    cout << endl;
    system("pause");
    return 0;
}

4.自适应容器stack和queue不支持迭代器。

#include<iostream>
#include<list>
#include<stack>
#include<stdlib.h>

using namespace std;

int main()
{
    stack<int, list<int>> intstack;
    for (int x = 1; x < 11; x++)
    {
        intstack.push(x * 100);
        cout << x * 100 <<' ';
    }
    cout << endl;
    int size = intstack.size();
    for (int x = 0; x < size; x++)
    {
        cout << intstack.top() << ' ';
        intstack.pop();
    }
    system("pause");
    return 0;
}
#include<iostream>
#include<list>
#include<queue>
#include<stdlib.h>

using namespace std;

int main()
{
    queue<int, list<int>> intqueue;
    for (int x = 1; x < 11; x++)
    {
        intqueue.push(x * 100);
        cout << x * 100 << ' ';
    }
    cout << endl;
    int size = intqueue.size();
    for (int x = 0; x < size; x++)
    {
        cout << intqueue.front() << ' ';
        intqueue.pop();
    }

    system("pause");
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值