Чтение struct в queue

383
19 августа 2017, 02:24

Добрый день! Задача следующая, реализовать запись и чтение в очередь... С записью вопросов не возникает.

//создаем необходимую структуру
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.

Answer 1

Вас спасет 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;
}

Вопрос только - вы собираетесь хранить в структуре именно указатели? Так, чисто на всякий случай - надеюсь, вы отдаете себе отчет, что данные, на которые они указывают, должны быть актуальны при работе с ними (что вы там собираетесь делать - выводить?)

READ ALSO
Подсказка при вводе в QTextEdit

Подсказка при вводе в QTextEdit

Есть кастомный QTextEdit, как в него добавить всплывающие подсказки при вводе, как в Qt Creator, Sublime или любой IDE

302
Имя функции в скобках

Имя функции в скобках

Почему данный код не работает?

413
Как создать константу в .pro файле?

Как создать константу в .pro файле?

Лучше чтобы ее видно было во всем проекте, но в принципе можно чтобы она работала и только вpro файле Qt

264
Как правильно создавать набор с++

Как правильно создавать набор с++

Даны целые числа K, N и набор из N целых чиселЕсли в наборе имеются числа, меньшие K, то вывести TRUE; в противном случае вывести FALSE

298