gpt4 book ai didi

c++ - 如何在队列开头添加值

转载 作者:行者123 更新时间:2023-11-28 02:14:20 24 4
gpt4 key购买 nike

我有一个队列定义为

queue<CData*> queue1;

CData在哪个类中

typedef unsigned char  U8;
typedef unsigned int U32;

class CData
{
private:
U8* m_Data;
U32 m_Len;
public:
CData(void) : m_Data(NULL), m_Len(0)
{
}
~CData(void)
{
FreeData();
}
void FreeData()
{
if (m_Data)
{
delete[] m_Data;
m_Data = NULL;
}
}
};

我假设我的 queue1 初始化值如下面的代码

for (U32 k = 0; k<5; k++)
{
size_t data_size = 1;
U8 *data_buf = new U8[data_size];
for (size_t i = 0; i < data_size; ++i)
{
data_buf[i] = k;
}
CData* result = new CData(data_buf, data_size);
queue1.push(result);
delete[] data_buf;
data_buf = NULL;
}

现在,我的 queue1 将包含值

0 1 2 3 4

我的问题是如何在 queue1 的开头插入 3 个零值,以便结果为

0 0 0 0 1 2 3 4

其次,在应用程序完成后,我如何释放/删除 queue1 。如果我使用

CData* result = new CData(); 

如何删除 result 变量?我在 Ubuntu 中使用 C++。提前致谢。

最佳答案

根据 here 的定义:

The std::queue class is a container adapter that gives the programmer the functionality of a queue - specifically, a FIFO (first-in, first-out) data structure.

这意味着如果您需要将元素插入到 beging 中,您需要另一个抽象。例如std::deque(双端队列)。

关于c++ - 如何在队列开头添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34493003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com