【发布时间】:2026-01-14 02:00:01
【问题描述】:
我正在构建一个大型消息队列并仅使用 PUSH 和 POP,这样可以更有效(向量或队列)以最大速度维护大型数据
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;
}
【问题讨论】:
-
队列是一个适配器,它使用下面的其他容器之一...en.cppreference.com/w/cpp/container/queue
-
std::vector根本不适合排队,你确定要这个吗? -
@Gorpik:是的,只是想确定一下。谢谢你的回答顺便说一句:)
-
哪个容器取决于您需要的特性 - 如果您将 N 个项目排入队列,那么所有容器将容纳 N 个项目(内存)...队列默认使用 Deque。速度方面将取决于“pop/push”的实际工作方式。您最好的选择是分析不同的结构 - 也许使用默认的 Deque 最适合您?但这取决于您的具体要求
-
制作两个程序,每种方法一个,并分别进行基准测试。比较结果。
标签: c++ performance vector queue