STL典型使用总结--deque类模板

版权声明:原创文章,请持怀疑态度阅读,欢迎转载,但请注明文章出处。 https://blog.csdn.net/qq_29344757/article/details/82829277

deque即双端队列,同样采用模板类实现,支持在头部/尾部插入和删除元素:

deque.push_back(elem);		//在容器尾部添加一个元素
deque.push_front(elem);		//在容器头部插入一个元素
deque.pop_back(elem);		//删除容器最后一个元素			
deque.pop_front();			//删除容器第一个元素

示例:

#include <algorithm>
#include <deque>
#include <iostream>

void show_deque(std::deque<int>& dq)
{
    for (std::deque<int>::iterator iter = dq.begin(); iter != dq.end(); ++iter) {
        std::cout << *iter <<" ";
    }
    std::cout << std::endl;
}

int main()
{
    std::deque<int> dq1;

    for (int i = 0; i < 5; ++i) {
        dq1.push_back(i + 1);	//尾加数据
    }

    for (int i = 0; i < 5; ++i) {
        dq1.push_front(i + 11);	//头加数据
    }

    show_deque(dq1);

    dq1.pop_back();		//删除尾部元素
    dq1.pop_front();	//删除头部元素

    show_deque(dq1);

    return 0;

}

STL实现了从迭代器获取该元素的下标的方法distance(),需要包含algorithm头文件:

std::deque<int>::iterator it = find(dq1.begin(), dq1.end(), 11);
if (it != dq1.end()) {
	std::cout << "元素11的下标为: " << distance(dq1.begin(), it) << std::endl;
}
else {
	std::cout << "不存在元素11" << std::endl;
}

猜你喜欢

转载自blog.csdn.net/qq_29344757/article/details/82829277