我正在构建一个大型消息队列并仅使用 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/