当前位置: 首页 > news >正文

以投资思维做网站推广排名seo

以投资思维做网站,推广排名seo,咖啡网站开发,矿山建设网站封装: std::queue 在底层容器的基础上 提供了封装。默认情况下,std::queue 使用 std::deque 作为其底层容器,但也可以配置为使用 std::list 或 其他符合要求的容器 时间复杂度: 入队和出队操作 通常是 常数时间复杂度&#xff08…

封装: std::queue 在底层容器的基础上 提供了封装。默认情况下,std::queue 使用 std::deque 作为其底层容器,但也可以配置为使用 std::list 或 其他符合要求的容器

时间复杂度: 入队和出队操作 通常是 常数时间复杂度(O(1)),这意味着 操作的时间不会随着队列大小的增加 而显著增加
空间复杂度: 由于 std::queue 使用底层容器来存储元素,其空间复杂度 取决于 所使用的底层容器

例如,使用 std::deque 时,空间复杂度通常是线性的(O(n)),其中 n 是队列中元素的数量

1、实现

template <typename T, typename Container = std::deque<T>>
class MyQueue {
private:Container data; // 使用底层容器存储队列的元素public:// 将元素添加到队尾void push(const T& value) {data.push_back(value);}// 移除队头元素void pop() {if (!empty()) {data.pop_front();} else {throw std::runtime_error("Queue is empty.");}}// 访问队头元素的引用T& front() {if (!empty()) {return data.front();} else {throw std::runtime_error("Queue is empty.");}}// 访问队尾元素的引用T& back() {if (!empty()) {return data.back();} else {throw std::runtime_error("Queue is empty.");}}// 检查队列是否为空bool empty() const {return data.empty();}// 返回队列的大小size_t size() const {return data.size();}
};

2、常见面试题

1、阻塞队列 在队列为空时 会阻塞出队操作,在队列满时 会阻塞入队操作。非阻塞队列 不会阻塞线程;如果 操作不能立即进行,则会失败 或 返回特定值

2、循环队列的实现
循环队列 可以使用 一个固定大小的数组 和 两个指针(头指针和尾指针,前闭后闭)来实现。当尾指针到达数组的末尾时,它会循环回到数组的开始位置。循环队列的优势 在于它可以重复使用空间,减少了 因为扩容而带来的性能开销

所有 + 的地方 要加上 % size
有两个重要条件:
队列为空:当 front == -1
队列已满:当 (rear + 1) % size == front

#include <iostream>
using namespace std;class CircularQueue {
private:int *queue;    // 动态数组存储队列元素int front;     // 指向队列头部的索引int rear;      // 指向队列尾部的索引int size;      // 队列容量public:// 构造函数,初始化队列CircularQueue(int maxSize) {size = maxSize;queue = new int[size];front = -1;rear = -1;}// 析构函数,释放动态内存~CircularQueue() {delete[] queue;}// 检查队列是否为空bool isEmpty() {return (front == -1);}// 检查队列是否已满bool isFull() {return ((rear + 1) % size == front);}// 向队列中插入元素void enqueue(int value) {if (isFull()) {cout << "队列已满,无法插入元素 " << value << endl;return;}if (isEmpty()) {front = 0; // 如果队列为空,则插入第一个元素时将 front 指向 0}rear = (rear + 1) % size; // 更新 rear 为下一个位置(循环)queue[rear] = value;cout << "插入元素: " << value << endl;}// 从队列中删除元素int dequeue() {if (isEmpty()) {cout << "队列为空,无法删除元素" << endl;return -1;}int value = queue[front];if (front == rear) {// 队列中只有一个元素,删除后队列为空front = -1;rear = -1;} else {// 更新 front 为下一个位置(循环)front = (front + 1) % size;}cout << "删除元素: " << value << endl;return value;}// 获取队列头部的元素int peekFront() {if (isEmpty()) {cout << "队列为空,无法获取头部元素" << endl;return -1;}return queue[front];}// 获取队列尾部的元素int peekRear() {if (isEmpty()) {cout << "队列为空,无法获取尾部元素" << endl;return -1;}return queue[rear];}// 显示队列中的元素void displayQueue() {if (isEmpty()) {cout << "队列为空" << endl;return;}cout << "队列元素: ";int i = front;while (true) {cout << queue[i] << " ";if (i == rear) {break;}i = (i + 1) % size;}cout << endl;}
};

https://kamacoder.com/ 手写简单版本STL,内容在此基础上整理补充

http://www.yayakq.cn/news/373598/

相关文章:

  • 网站备案都审核什么资料关于网络营销的论文
  • 甘州区住房和城乡建设局网站南通网站建设培训
  • 盐城网站建设hx1818网站系统管理员
  • 厦门市建设局报表网站建设网站的要点
  • 海南做网站找谁设计企业展厅公司
  • 长宁哪里有做网站优化比较好网站做邮箱吗
  • 网站建设的广告投入百度搜索引擎提交入口
  • 淘宝客返利网站建设网站建设功能设计
  • 上海企业建站步骤局门户网站建设工作汇报
  • 国外网站在国内备案小纯洁网站开发
  • 怎么建立一个网站广告常德seo
  • iis添加asp网站遂宁公司做网站
  • 电子商务的网站建设要求步骤制作壁纸的软件
  • 网站服务器参数云星穹铁道网页版入口
  • 做网页兼职网站有哪些dedecms网站信息统计
  • 嘉兴制作手机网站天津企业建网站
  • 湖南网站建设磐石网络阿里网站官网入口
  • 漳州 做网站Wordpress做APP后端
  • 电商网站建设 平台在国外建网站方便吗
  • 葫芦岛公司做网站红色网站呢
  • 建设银行河南分行网站临沂医院网站建设
  • 购买网站做网页游戏windows优化大师是自带的吗
  • 何做百度推广网站沧州建设厅官方网站
  • 微信公众号私自建设电影网站ipv6改造 网站怎么做6
  • 免费做链接的网站网站建设公司业务培训
  • 网站的创新点有哪些哪一些网站可以开户做百度广告
  • 企业网站怎样做外链方法别墅建筑设计说明
  • 怎样做一个好的网站江西最近发生的新闻
  • 淘宝上网站开发退款移动电子商务平台就是手机网站
  • 大型门户网站建设定制网页搜索框记录怎么删除