Отталкивание списка очередей

Я создал список очередей и мне было интересно, как я смогу отодвинуть очередь, чтобы добавить новый элемент. У меня есть несколько клиентов для отправки сообщений, и хост будет отправлять одно и то же сообщение каждому в определенном порядке. У меня сейчас это как

struct messages
{
char buffer[64];
}

list<queue<messages>> MessageList;
for(int i = 0; i < numOfClients; i++)
{
queue<messages> tempQueue;
MessageList.push_back(tempQueue);
}
list<queue<messages>>::iterator MsgIt;
MsgIt = MessageList.begin();

messages storedMsg = {}
char tempMsg[64] = "This is the message to be stored!";
for(int j = 0; j < 64; j++)
storedMsg.message[j] = tempMsg[j];
for(int i = 0; i < numOfClients; i++)
{
*MsgIt.push(storedMsg);
MsgIt++;
}

Кажется, есть ошибка, в которой *MsgIt не позволит мне получить доступ к push() функция.

Я это понимаю

queue<messages> MessageList;
MessageList.push(Message);

будет работать, но так как несколько клиентов получат это сообщение, я хочу использовать его в «списке очередей» вместо того, чтобы создавать 15-20 или около того очередей, которыми может быть сложно управлять.

1

Решение

Просто используйте MsgIt->push(Message) вместо неловкого разыменования. . оператор имеет более высокий приоритет, чем * оператор, так что происходит, что он пытается позвонить . на итераторе, а не на то, на что указывает итератор, а затем пытается разыменовать возвращаемое значение, ни то, ни другое. Вы должны сделать (*MsgIt).push чтобы получить желаемый результат с помощью разыменования.

Кроме того, использование итераторов не совсем так, как вы должны это делать. Это должно выглядеть так:

for(MessageList::iterator MsgIt = MessageList.begin(), MsgIt < MessageList.end(), MsgIt++)

Наконец, как упомянул @ChronoTrigger, вы на самом деле не queueв MessageList список, по крайней мере, в этом коде. Так что нечего push в первую очередь.

0

Другие решения

*MsgIt имеет тип queue<messages>, и вы пытаетесь вставить переменную типа char[64],

Вы должны вставить сначала queue а затем, в queue, твое сообщение.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector