如何在队列开头添加值

时间:2015-12-28 11:50:57

标签: c++ g++ queue

我有一个定义为

的队列
df <- data.frame("name" = LETTERS[1:4], 
                 "lon" = c(23.231, 1.23, 115.40, -87.98), 
                 "lat" = c(32.78, -34.30, 21.92, -12.2))
library(geosphere)
mat <- distm(c(-73.001, 40.21), as.matrix(df[, -1]))
colnames(mat) <- df$name
mat
#            A        B        C       D
# [1,] 8209788 11253350 13066503 6035987

CData是哪个类

queue<CData*> queue1;

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

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的开头插入3个零值,以便结果为

0 1 2 3 4

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

0 0 0 0 1 2 3 4

如何删除CData* result = new CData(); 变量?我在Ubuntu中使用C ++。提前致谢。

1 个答案:

答案 0 :(得分:2)

根据here的定义:

  

std::queue类是一个为程序员提供的容器适配器   队列的功能 - 特别是FIFO(先进先出,   先出)数据结构。

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