Добрый день! Задача следующая, реализовать запись и чтение в очередь... С записью вопросов не возникает.
//создаем необходимую структуру
struct my_data_rows
{
char* name1;
char* name2;
char* name3;
char* name4;
};
//объявляем очередь
queue<my_data_rows> queue_rows_with_data;
//записываем
bool writeDataToBuffer(char* name1, char* name2, char* name3, char* name4) {
my_data_rows new_my_data;
new_my_data.name1 = name1;
new_my_data.name2 = name2;
new_my_data.name3 = name3;
new_my_data.name4 = name4;
queue_rows_with_data.push(new_my_data);
return true;
}
С этим вроде бы все понятно. Вот не понятно начинается дальше, когда я пытаюсь прочитать из очереди..
bool readDataToBuffer()
{
my_data_rows new_my_data;
for (int x = 0; x < queue_rows_with_data.size(); x++)
{
queue_rows_with_data.pop();
}
return true;
}
Собственно сам вопрос, как прочитать из очереди структуру, и вывести например с помощью стандартного оператора cout.
Вас спасет front() - в силу ряда проблем с безопасностью исключений функция, возвращающая элемент, и функция, удаляющая его - это разные функции.
bool readDataToBuffer()
{
my_data_rows new_my_data;
while(!queue_rows_with_data.empty())
{
new_my_data = queue_rows_with_data.front();
cout << new_my_data.name1 << endl;
queue_rows_with_data.pop();
}
return true;
}
Вопрос только - вы собираетесь хранить в структуре именно указатели? Так, чисто на всякий случай - надеюсь, вы отдаете себе отчет, что данные, на которые они указывают, должны быть актуальны при работе с ними (что вы там собираетесь делать - выводить?)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей