我有以下結構:的push_back一個結構爲載體的結構
enum messageType {New = 0, Old = 1, No_Message = 2};
typedef struct {
enum messageType type;
unsigned int senderID;
char message[100];
} StoredMessageData;
struct StoredMessage {
unsigned int recipientID;
vector<StoredMessageData> messages;
StoredMessage(const unsigned int& intRecipient = 0, const vector<StoredMessageData>& data = vector<StoredMessageData>())
: recipientID(intRecipient), messages(data)
{
messages.reserve(10);
}
bool operator<(const StoredMessage& compareTo) const
{
return recipientID < compareTo.recipientID;
}
bool operator==(const StoredMessage& compareTo) const
{
return recipientID == compareTo.recipientID;
}
};
在我的主要方法,在某些時候,我收到一條消息,並希望將其存儲像這樣:
if(msgs.find(rcvdRecipientID) == msgs.end())
{
StoredMessage storedMsg;
storedMsg.recipientID = rcvdRecipientID;
msgs.insert(storedMsg);
}
set<StoredMessage>::iterator it = msgs.find(rcvdRecipientID);
StoredMessage storedMsg = *it;
StoredMessageData data;
data.type = New;
data.senderID = rcvdSenderID;
strcpy(data.message, rcvdMessage);
storedMsg.messages.push_back(data);
如果在push_back()之後,我調用storedMsg.messages.size(),那麼給出的值爲1.這對我來說很有意義。
可是,後來,我想知道我保存了多少消息,因此,這段代碼:
StoredMessage storedMsg;
if(msgs.find(rcvdSenderID) != msgs.end())
{
storedMsg = *(msgs.find(rcvdSenderID));
cout << "Number of stored messages to send: " << int(storedMsg.messages.size()) << endl << endl;
...
這裏,storedMsg.messages.size()返回0,即使是像以前一樣使用相同的ID ......我很困惑,爲什麼會發生這種情況,並且懷疑它與被複制的載體有關,因爲它們的大小各不相同,但我不確定。我不是C++專家,所以請溫和。 謝謝!
上面我沒有注意到,msgs是一組StoredMessage。 –
你總是可以編輯你的問題 –