나는 다음과 같은 구조체가 : 나는이 메시지를 수신 등처럼 저장할 어떤 점에서 나의 주된 방법은는 구조체에 벡터로 구조체와 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++ 전문가가 아니므로 친절하십시오. 감사합니다. 당신은 객체의 사본을 작성하고 사본에 대한 모든 수정을
StoredMessage storedMsg = *it;
여기에 있기 때문에
위의 설명에 실패했습니다. msgs는 StoredMessage의 집합입니다. –
질문을 언제든지 편집 할 수 있습니다. –