c++ - 如果使用 vector 作为容器,如何弹出队列

标签 c++

我正在STL中学习队列,然后考虑尝试其他可用于实现队列的容器。

所以我使用vector作为容器,但是在MSVS中使用pop函数

queue<int, vector<int>> q;
q.push(1); 
q.push(2);
q.pop();
cout << q.front() << " ";

我遇到错误
C2039'pop_front'不是'std::vector>的成员

C2056非法表达式(它指向队列头文件中的pop函数)

那么当我们更换容器时还有其他方法可以弹出一个元素吗?

最佳答案

std::queue要求基础容器为SequenceContainer,并提供

  • back()
  • front()
  • push_back()
  • pop_front()

  • 成员函数。 std::vector没有pop_front,因为它是O(N)操作,因此您不能将其用作基础容器。您或者需要使用自己的具有这些功能的 vector 类,或者切换到使用具有这些功能的其他容器。

    关于c++ - 如果使用 vector 作为容器,如何弹出队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61482205/

    相关文章:

    c++ - 从 std::vector<> 转换为双指针?

    c++ - 带有 cmake 的独立静态库 (.a)

    c++ - boost::mpl 不使用(甚至不兼容)std::pair 的原因是什么?

    c++ - 返回 int 但未显式返回任何内容的函数的返回值是多少。例如输出

    c++ - main.cpp :(. text+0x8f): 未定义对[对象方法]的引用

    c++ - CMake - 取决于另一个 cmake 项目

    c++ - 在 c/c++ 中提取算术表达式中的项

    成员函数中的 C++ 静态变量

    c++ - 如何制作一个 CRect 对象数组?

    java - 如何获取字符串的所有子序列组合(在 Java 或 C++ 等中)