c++ - 迭代器声明 : "does not contain a type"

标签 c++ stl iterator queue

我很难理解为什么会收到此错误。我指的是 Josuttis 的 STL 书和其他资源,看来我在下面声明我的迭代器的方式应该有效:

#ifndef LRU_H
#define LRU_H

#include <queue>
#include <iterator>


class LRU
{
public:

   LRU();                           // default constructor
   LRU(int);                        // constructor with argument
   ~LRU();                          // destructor 

   // Methods
   //
   void enqueue(int);               // add datum to the queue
   void dequeue();                  // remove datum from the queue
   void replace();                  // replacement algorithm
   void displayQueue() const;       // display contents of queue

private:

   // Member Data
   //
   const int MAX_SIZE;
   int m_currentCount;

   std::queue<int> m_buffer;
   std::queue<int>::const_iterator iter;

};

#endif

但是我声明 const_iterator 的那一行会产生以下编译器错误:

In file included from main.cpp:10:
lru.h:41: error: 'const_iterator' in class 'std::queue<int, std::deque<int, std::allocator<int> > >' does not name a type
In file included from lru.cpp:10:
lru.h:41: error: 'const_iterator' in class 'std::queue<int, std::deque<int, std::allocator<int> > >' does not name a type
lru.cpp: In constructor 'LRU::LRU()':
lru.cpp:17: error: class 'LRU' does not have any field named 'm_pos'
lru.cpp: In constructor 'LRU::LRU(int)':
lru.cpp:23: error: class 'LRU' does not have any field named 'm_pos'

Compilation exited abnormally with code 1 at Thu Nov 15 10:47:31

在导致错误的类中声明迭代器有什么特别之处吗?

最佳答案

容器适配器 std::queue 没有可公开访问的迭代器。自 std::queue<int>隐藏在 LRU 中实现,您可以考虑使用 std::deque<int> 反而。 std::dequestd::queue 使用的默认容器在引擎盖下,因此您不会因使用它而招致性能损失。我认为只要您不在 LRU 中公开非队列操作,就可以安全使用它。界面。

关于c++ - 迭代器声明 : "does not contain a type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404201/

相关文章:

c++ - C++中的静态成员函数错误

android - 无法在 Android Studio : Unable to load native library 中使用 CMake 链接库

c++ - 调度自动化

c++ - WINAPI:如何将编辑的文本转换为 std::string?

c++ - gdb pretty-print 不起作用

c++11 - 使用 STL 查找小于当前的最大元素

c++ - key不存在时map给出的值

javascript - 迭代关联数组的前 x 个元素

Java:比较对象值

java同时迭代list和addFirst