C++ vector 或 Queue 在内存和速度方面构建大 Q

标签 c++ performance vector queue

我正在构建一个大型消息队列并仅使用 PUSH 和 POP,这样可以更有效地( vector 或队列)以最大速度维护大型数据

struct MQStruct {
    wchar_t *serviceName; 
    int durability; 
    int msgType; 
    int msgHeader; 
    wchar_t *msgId; 
    wchar_t *payload; 
    int payloadSize; 
    int ttl; 
    int priority;
}MQStructObj;

vector<MQStruct> MQvector;
queue<MQStruct> MSQ;

int SendMessage(wchar_t *serviceName, int durability, int msgType, int msgHeader, wchar_t *msgId, wchar_t *payload, int payloadSize, int ttl, int priority) {

MQStructObj.serviceName=serviceName;
MQStructObj.durability=durability;
MQStructObj.msgType=msgType;
MQStructObj.msgHeader=msgHeader;
MQStructObj.msgId=msgId;
MQStructObj.payload=payload;
MQStructObj.payloadSize=payloadSize;
MQStructObj.ttl=ttl;
MQStructObj.priority=priority;

    //Which one is better (Vector or Queue) in term of memory, speed and why

MSQ.push(MQStructObj);

    //OR

MQvector.push_back(MQStructObj);


return 0;
}

最佳答案

SO上有很多关于queue/vector/list的讨论,你可以搜索并重用资源。简而言之:

  • 使用std::queue:如果你需要在开始和结束时快速插入和删除 它的结束;
  • 如果需要随机访问元素,请使用std::vector
  • 当从中间频繁插入和删除时 你需要的序列 std::list

因为您只对容器使用 push/pop,std::queue 肯定是代替 std::vector 的方式。

您可以从以下位置获得更多详细信息:http://en.cppreference.com/w/cpp/container

关于C++ vector 或 Queue 在内存和速度方面构建大 Q,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14335861/

相关文章:

python - Raspberry Pi CEC 代码的 SWIG 产生 undefined symbol 错误

c++ - wpa_supplicant C API 未定义行为

c++ - 在我的场景中,什么可能导致解压缩命令返回 -1?

algorithm - UI 的快速布局算法

java - 如何在不创建大字符串的情况下打印由分隔符分隔的集合元素?

java - 在 Android 谷歌地图中绘制 4K 多段线

c++ - 如何对结构容器的 vector 进行排序?

c# - 如何从 C# 将结构作为 C dll 中的指针传递

matlab - Matlab 中两点之间的距离

r - 在 R 中,按特定字符分割字符向量;将第三 block 保存在新向量中