9

私はメッセージの大きなキューを構築し、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;
}
4

2 に答える 2

20

SOのキュー/ベクトル/リストに関しては多くの議論があり、リソースを検索して再利用できます。要するに:

  • 使用std::queue:最初と最後の両方で高速な挿入と削除が必要な場合。
  • std::vector要素へのランダムアクセスが必要な場合は、を使用します
  • シーケンスの途中から頻繁に挿入と削除が行われる場合は、std::list

コンテナへのプッシュ/ポップのみを使用するので、確実std::queueではなく方法です。std::vector

詳細については、http://en.cppreference.com/w/cpp/containerを参照してください。

于 2013-01-15T10:39:18.240 に答える
4

キューを効率的にシミュレートすることstd::vectorはできません。コンテナの片側からのみプッシュとポップを実行できます。メッセージキューを実装する必要がある場合は、キューを使用します。これが目的です。

于 2013-01-15T10:38:48.417 に答える