C++ Deque容器与迭代器
开发工具与关键技术:Visual Studio、C++
作者:张国军
撰写时间:2019年07月08日
deque.begin();返回容器中第一个元素的迭代器。
deque.end();返回容器中最后一个元素之后的迭代器。
deque.rbegin();返回容器中倒数第一个元素的迭代器。
deque.rend();返回容器中倒数最后一个元素之后的迭代器
例子:
#include <iostream>
#include <deque>
using namespace std;
void main()
{
deque<int> deqInt;
for (int i = 0; i < 10; i++)
{
deqInt.push_back(i);
}
cout << "------------正向--------------" << endl;
for (deque<int>::iterator it = deqInt.begin(); it != deqInt.end(); ++it)
{
cout << *it;
cout << " ";
}
cout << endl;
cout << "-----------反向--------------" << endl;
for (deque<int>::reverse_iterator rit = deqInt.rbegin(); rit != deqInt.rend(); ++rit)
{
cout << *rit;
cout << " ";
}
cout << endl;
}
从结果图中我们 可以看得出来迭代器可以从我们deque deqInt;的开始遍历数据,也可以反向输出 ,但是我们需要用到的是deque::reverse_iterator rit = deqInt.rbegin();rit != deqInt.rend(); ++rit这样子我们的迭代器指针一开始就指在我们元素9的位置了然后一直加就往回一直遍历。
deque 中查找某个数在数组下标的值
#include <iostream>
#include <deque>
using namespace std;
void main()
{
deque<int> d1;
for (int i = 0; i < 10; i++)
{
if (i == 6) {
d1.push_back(-33);
}
else
d1.push_back(i);
}
cout << "------------正向--------------" << endl;
for (deque<int>::iterator it = d1.begin(); it != d1.end(); ++it)
{
cout << *it;
cout << " ";
}
cout << endl;
cout << "-----------反向--------------" << endl;
for (deque<int>::reverse_iterator rit = d1.rbegin(); rit != d1.rend(); ++rit)
{
cout << *rit;
cout << " ";
}
cout << endl;
deque<int>::iterator it = find(d1.begin(), d1.end(), -33); //find 为一个算法
if (it != d1.end())
{
cout << "-33 数组下标是" << distance(d1.begin(), it) << endl;
//distance 为求偏移量的函数。 注意数组下标是从 0 开始的
}
else
{
cout << "没有找到值为-33 的元素" << endl;
}
//返回的是第一个值为-33 的元素的位置
}
从图中可以看出,我们的容器里边是有-33的 if (i == 6) {d1.push_back(-33); }因为我是在i==6的时候进行新增了一个-33的元素也就是我们的七个元素为-33;当我把它注销掉的时候,那么来看一下结果图
从图中我们就可以看出我们的容器并没有-33的元素,所以没有找到我们所要找的元素,那个时候我们的迭代器指针就会等于我们d1.end()就相当于it == d1.end()。