我想使用STL的容器将其用作缓冲区,所以我定义了这样的东西:
typedef queue<char*> CHARQUEUE;
然后
CHARQUEUE p;
然后我做了一些操作,如:
p.push("mouse");
p.push("horse");
但我想要的是一个256字节的char数组队列,以保存数据。我们可以定义这样的东西:
typedef unsigned char newtype[256]
queue<newtype> newqueue;
我正在使用unsigned char来保存一些我不想改变的数据。只是把它放在缓冲区并再次检索它。
否则如果有人有其他实施,我会很感激。
答案 0 :(得分:3)
为您的原始数据队列,只需定义
typedef unsigned char Byte;
typedef std::vector<Byte> ByteVector;
typedef std::queue< ByteVector > DataQueue;
对于你的字符串队列,其他人建议的std::queue< std::string >
很好
ALL_UPPERCASE_NAMES
最好保留给宏
欢呼&amp;第h。,
答案 1 :(得分:2)
使用
std::queue<std::string>
编辑:
一些替代方案。
std::queue<std::vector<char>>
std::queue<std::array<char, 256>>
答案 2 :(得分:1)
数组不符合stdlib容器的要求(可分配等) - 例如使用boost的数组类型(或tr1 / c ++ 1x中的数组)。
答案 3 :(得分:1)
使用queue<string> CHARQUEUE;
编辑:
如果您只想存储指向某些外部缓冲区的指针,请使用queue<const char*> CHARQUEUE;
,但请注意,这不会复制数据。
如果您想制作副本,请使用queue< vector<char> > CHARQUEUE;
。
答案 4 :(得分:0)
如果您希望内容保持不变,可以使用queue<boost::shared_array<const char>>
(请参阅here)来执行此操作。
queue<boost::shared_array<const char>> queueArray;
const char mouse[] = "mouse";
boost::shared_array<const char> element(mouse);
queueArray.push(element);