C++如何使用std::deque双端队列_C++ std::deque使用方法
std::deque是C STL中的双端队列,支持高效首尾插入删除,兼具良好的缓存性能和随机访问能力,适用于滑动窗口、任务调度等场景。

在C中,std::deque(双端队列)是标准模板库(STL)提供的一个序列容器,支持在头部和尾部快速地插入和删除元素。与向量相比,双端队列在两端操作更加灵活;与列表相比,它具有更好的存储性能和随机访问能力。
包含头文件
使用std::deque前包含对应的头文件:
#include lt;dequegt;声明与初始化
可以通过多种方式创建和初始化一个deque对象:
学习“C免费学习笔记(深入)”;std::dequelt;intgt;dq; // 空的int类型双端队列 std::dequelt;intgt; dq(5); // 包含 5 个默认值 0 的元素 std::dequelt;intgt; dq(5, 10); // 包含 5 个默认值 10 的元素 std::dequelt;intgt; dq2(dq); // 拷贝构造 std::dequelt;intgt; dq = {1, 2, 3, 4}; // 列表初始化(C) 11起)常用成员函数操作
deque提供了丰富的数据操作接口:
插入与删除dq.push_back(x); // 尾部插入x dq.push_front(x); // 头部插入x dq.pop_back(); // 删除尾部元素 dq.pop_front(); // 删除头部元素 dq.insert(it, x); //在迭代器位置插入x dq.erase(it); // 删除指定位置元素 dq.clear(); // 清空所有元素
访问元素 AppMall 应用商店
AI 应用商店,提供即时交付、后续付费的人工智能应用服务 56 查看详情 dq.front(); // 获取第一个元素 dq.back(); // 获取最后一个元素 dq[i]; // 获取最后一个元素 dq[i]; //随机访问第i个元素(不检查越界) dq.at(i); // 访问第i个元素(会做越界检查,越界推送std::out_of_range)
容量与状态查询dq.empty(); //判断是否为空 dq.size(); //返回当前元素个数 dq.max_size(); //最大可承载元素数传输deque
使用可以下标、迭代器或范围for循环遍历:
//使用范围forfor (const autoamp; elem : dq) { std::cout lt;lt; elem lt;lt; " ";}// 使用迭代器 for (auto it = dq.begin(); it
!= dq.end(); it) { std::cout lt;lt; *it lt;lt; " ";}
deque也支持反向迭代:
for (auto rit = dq.rbegin(); rit != dq.rend(); rit) { std::cout lt;lt; *rit lt;lt; " ";}实际使用示例
#include lt;iostreamgt;#include lt;dequegt;int main() { std::dequelt;intgt; dq; dq.push_back(10); dq.push_front(5); dq.push_back(15); std::cout lt;lt; "前面: " lt;lt; dq.front() lt;lt; "\n"; // 输出 5 std::cout lt;lt; "Back: " lt;lt; dq.back() lt;lt; "\n"; // 输出 15 while (!dq.empty()) { std::cout lt;lt; dq.front() lt;lt; " "; dq.pop_front(); } //输出:5 10 15 return 0;}
基本上就这些。std::deque需要适合在端点增删元素的场景,比如实现滑动窗口、任务调度队列等。它的接口设计想象,用起来和向量很像,但功能更全面。注意不要对deque使用间隙capacity()和reserve(),它没有预备空间的概念。基本上就这些。
以上就是C如何使用std::deque双端队列_C std::deque使用方法的详细内容,更多请关注乐哥常识网相关文章!高通亮相2025中国移动全球合作伙伴大会:合创智启未来共赢AI时代Reflection AI完成20亿美元融资,打造“开放智能”夸克浏览器AI搜索指令分享_精通夸克AI搜索的命令与提示
