Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C/C++ Закрытие стороннего приложения WinAPI Доброго времени суток! Столкнулся с проблемой закрытия активного окна. Есть программа, которая сейчас находится в активном состоянии и производит рендер. Закрыть её можно только через диспетчер задач. Есть ли какая-нибудь функция, которая позволяет сделать это в коде? Пробовал и так и этак, причем, без рендера программа закрывается в любом случае, а вот во время - нет. Есть такой код, но,... https://www.cyberforum.ru/ c-cpp/ thread3060596.html C/C++ Задачка с++
Дана последовательность вещественных чисел Ai, в которой первый член неотрицателен, а также присутствует хотя бы один член, меньший нуля. Пусть n — номер первого отрицательного члена последовательности. Тогда вы должны вычислить следующую величину: S=A1−A2+...+(−1)^n∗An−1 На вход подаётся последовательность вещественных чисел, по модулю не превосходящих 10. Длина последовательности не...
C/C++ Найти количество способов вычёркивания из данного слова некоторого набора символов, чтобы слово стало палиндромом https://www.cyberforum.ru/ c-cpp/ thread3060253.html
Нужна помощь, не знаю как сделать вывод самих палиндромов, а не просто счетчика, условие и код ниже. Условие: Непустая строка, содержащая некоторое слово, называется палиндромом, если это слово одинаково читается как слева направо, так и справа налево. Имеется слово s, состоящее из n прописных букв латинского алфавита. Вычёркиванием из этого слова некоторого набора символов можно получить...
C/C++ Приложение с простым gui для работы с базой данных Здравствуйте, уважаемые участники форума! Стоит задача сделать простое приложение с точки зрения интерфейса, но сложное (в моем понимании) в реализации. Необходимо создать простой интерфейс окно с двумя вкладками: первая вкладка с 5 полями для ввода информации типа текст, одно поле для прикрепления файла pdf и кнопка сохранить/добавить. Вся эта информация должна складироваться в некую базу... https://www.cyberforum.ru/ c-cpp/ thread3060180.html
Source SDK 2013 (c++) C/C++
Все здравствуйте! У меня есть вопрос. Игра Half Life 2, исходный код движка на c++. Мне нужно сделать какую-то задержку на выполнение команды(что-то на вроде таймера). Например я создал какой-то объект, его нужно будет удалить через 5 секунд. Как сделать задержу на эти самые 5 секунд? Среда Visual Studio 2013. Кстати, sleep и подобные функции не подойдут.
C/C++ Компоновщик Добрый день. Люди, разбираюсь с процессом компиляции программы в c++, с помощью Visual Studio компилятора. В результате работы препроцессора я получил вот такие обработанные .cpp файлы, с заменными #include макросами: Main.i class MyClass { public: void Method(); }; https://www.cyberforum.ru/ c-cpp/ thread3059786.html
C/C++ Найти минимальный(чет) и максимальный(нечет) элемент в массиве Ассемблерная вставка https://www.cyberforum.ru/ c-cpp/ thread3059753.html
Здравствуйте! Нужно написать код на c++ с ассемблерной вставкой для нахождения минимального(чет) и максимального(нечет) элемента в массиве Ввод/вывод организовать на языке высокого уровня. Обработку ассемблерной вставкой. После долгих попыток получилось написать это:
АВЛ дерево C/C++
Здравствуйте! На хабре есть реализация авл-дерева и по коду есть вопрос: есть ли фрагменты кода, в которых возможна такая ситуация, что вызываются поля у nullptr? Если есть, укажите, пожалуйста, эти фрагменты) struct node // структура для представления узлов дерева { int key; unsigned char height; node* left; node* right; node(int k) { key = k; left = right = 0; height...
C/C++ Plist файл https://www.cyberforum.ru/ c-cpp/ thread3059065.html
Добрый день! Подскажите решаема ли задача. Есть iPhone с забытым логином Apple ID. На устройстве архи важные данные, фотографии, заметки и тд. Задача вернуть доступ к этим данным. Пароль от учетной записи известен, вся загвоздка только в забытом логине Apple ID. Поддержка ничем помочь не можем. В интернете нашел информацию, что из айфона можно достать Plist файл на котором содержится все инфа....
C/C++ Задание аргументов для функции по имени https://www.cyberforum.ru/ c-cpp/ thread3059035.html
Доброе утро. Хотелось бы уточнить у пресвященных. Имеется-ли возможность в c++ задавать аргументы функции с конкретным указанием имени? Например в c# такая возможность есть: void main(){ PrintOrderDetails(orderNum: 31, productName: "Red Mug", sellerName: "Gift Shop"); } void PrintOrderDetails(string sellerName, int orderNum, string productName) {} Зачем мне это понадобилось? Ну...
C/C++ Clangd не видит стандартные библиотеки C++
Я считаю себя новичком, поэтому за тупость заранее простите))) Сижу на Pop_OS, всё время пользовался ей. Писал код в LunarVim, всё было хорошо. Но в какой-то момент LSP clangd перестал определять библиотеки С++ ("iostream" file not found), для СИ всё работает, и если в С++ использовать, например, math.h, то ошибок нет, а вот cmath найти не может. Всё переустановил, потом ОС переустановил и 0...
C/C++ Задачи студенческих лаб. работ по массивам и матрицам С++ https://www.cyberforum.ru/ c-cpp/ thread3058135.html
16 / 12 / 4
Регистрация: 01.05.2023
Сообщений: 14
02.05.2023, 11:09 0

Как сделать грамотно вывод очереди в с++ - C/C++ - Ответ 16884094

02.05.2023, 11:09. Показов 994. Ответов 2
Метки (Все метки)

Ответ

std::queue::pop() не возвращает значение:

C++
1
2
3
4
5
6
void printMonsters() {
        while (!Battle.empty()) {
            cout << Battle.front();
            Battle.pop();
        }
    }
Цитата Сообщение от GODLucker Посмотреть сообщение
знаю что нужно сделать перегрузку
Перегрузку сделать не надо, класс queue написан не вами, и изменить его удастся только если создать класс наследник. Не думаю, что это то что вам нужно.

А вот что вам нужно, так это пересмотреть выбор структуры данных. printMonsters() - функция, которая выводит всех монстров, одновременно их всех удаляя. Предположу, что задача стояла просто вывести. Тогда, можно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//...
#include <forward_list>
 
class Battle {
private:
    forward_list<Monster> Battle;
    //vector<Monster>::iterator iter;
public:
    void AddM(Monster& name) {
        Battle.push_front(name);
    }
    void printMonsters() {
        for (Monster& m: Battle) {
            std::cout << m;
        }
    }
};
//...
Да и вообще, почему бы не перегрузить operator<<, как это было сделано с монстрами выше?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <forward_list>
 
using namespace std;
class Monster {
private:
    string monster;
    int Health;
public:
    Monster(const string& Monster, int HP) {
        this->monster = Monster;
        this->Health = HP;
    }
    string Get_Monster() const { return monster; }
    int Get_Health() const { return Health; }
 
    friend ostream& operator<<(ostream& out, const Monster& name) {
        return out << "Monster name: " << name.Get_Monster() << " Monster HP: " << name.Get_Health() << endl;
    }
 
};
 
class Battle {
private:
    forward_list<Monster> monsters;
 
public:
    void AddM(const Monster& monster) {
        monsters.push_front(monster);
    }
 
    friend ostream& operator<<(ostream& out, const Battle& battle) {
        for (const Monster& m : battle.monsters)
            out << m;
        return out;
    }
};
 
int main() {
    Monster Demon("Demon", 80);
    Monster Ogr("Ogr", 100);
    Monster Skeleton("Demon", 15);
    Battle FirstBattle;
    FirstBattle.AddM(Demon);
    FirstBattle.AddM(Ogr);
    FirstBattle.AddM(Skeleton);
    cout << FirstBattle;
}
С вашего позволения, некоторые рекомендации по дальнейшему написанию кода:
1) методы, не изменяющие сам объект при своём выполнении, лучше обозначать const: int Get_Health() const { ... };
2) передачу структуры выполнять через константную ссылку, если вы не собираетесь менять то, что вам дала вызывающая сторона: friend ostream& operator<<(ostream& out, const Monster& name) (name меняться не будет, поэтому передаём константную ссылку - const TypeName&);
3) поизучайте стандартные STL контейнеры - их много, и каждый из них имеет свои преимущества и недостатки в разных ситуациях: vector, list, forward_list, map, multimap, set и так далее;
4) старайтесь придерживаться единого стиля именования переменных/методов/функций. У вас в Monster есть поле monster с маленькой буквы, и поле Health с заглавной. Так-же, у вас есть метод Get_Monster с разделением в виде нижнего подчёркивания, и AddM без такового. Если у вас нет каких-либо предпочтений в этом вопросе, рекомендую использовать snake_case (все буквы малые, слова разделяются нижним подчёркиванием) для переменных, полей, функций и методов; PascalCase для имён типов (классы, using) и SCREAM_CASE для директив #define

Цитата Сообщение от GODLucker Посмотреть сообщение
реализовать вывод по приоритету, всё в принципе понятно
это, как раз таки, не понятно. Что за приоритет? Когда был добавлен? Если да, замените в функции Battle::AddM monsters.push_front(monster); на monsters.push_back(monster);

Вернуться к обсуждению:
Как сделать грамотно вывод очереди в с++ C/C++
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2023, 11:09
Готовые ответы и решения:

Как грамотно сделать вывод графики в оконном приложении?
Поясните, пожалуйста, как грамотно сделать вывод графики в оконном приложении. Мне надо...

Как сделать вывод элементов массива по очереди
Добрый день такой вопрос. Мне нужно сделать так что бы элементы массива выводились один за другим,...

Как грамотно сделать псевдоним?
Делаю себе помощника в Excel Вот такие конструкции довольно часто мучают моцк: if...

Как грамотно сделать апгрейд?
Версия Windows: Майкрософт Windows 10 Pro Название системы: HP 500-008er Процессор: AMD A6-5400K...

2
02.05.2023, 11:09
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2023, 11:09
Помогаю со студенческими работами здесь

Реализации кода через очереди(Не понимаю как сделать код через очереди)
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt; #include &lt;algorithm&gt; using...

Объясните как грамотно сделать цикл
Здравствуйте, есть макрос с функцией, добавляющий свойства из формы: Sub...

Как грамотно сделать рамку в дипломе
Подскажите как можно сделать основную надпись, что бы один раз настроил все расстояния её...

Фоновая картинка - как грамотно сделать?
Здравствуйте. Кто сталкивался, помогите. Если я делаю в шапке фоновую картинку растянутую на весь...

дубль сайта, как грамотно сделать?
Такая проблема: есть сайт по продаже и установке по Москве, пусть будет superokna.ru. заказчик...

Как грамотно сделать таблицы Category и Status?
Как грамотно сделать таблицы Category и Status? Как на скрине в приложении или же в этих таблицах...

0
Новые блоги и статьи
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетных компьютеров началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
Как определить, содержит ли строка подстроку в JavaScript
InfoMaster 19.01.2025
При разработке веб-приложений часто возникает необходимость выполнять различные операции со строками, среди которых особое место занимает поиск подстрок. JavaScript предоставляет несколько встроенных. . .
Что такое метаклассы в Python
InfoMaster 19.01.2025
Метаклассы в Python представляют собой один из самых мощных и одновременно сложных механизмов языка, позволяющий программистам контролировать процесс создания классов. По своей сути, метакласс. . .
Как удалить свойство из объекта JavaScript
InfoMaster 19.01.2025
В современной веб-разработке объекты JavaScript играют фундаментальную роль в организации и структурировании данных. Они представляют собой контейнеры, которые хранят связанные данные и. . .
Какая разница между String и string в C#
InfoMaster 19.01.2025
В языке программирования C# существует интересная особенность: для работы со строками можно использовать как String, так и string. Эта двойственность часто вызывает вопросы у разработчиков, особенно. . .
Как в Git откатить репозиторий к предыдущему коммиту
InfoMaster 19.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, предоставляя разработчикам мощные инструменты для управления изменениями в. . .
Как работают замыкания (closure) в JavaScript
InfoMaster 19.01.2025
В мире современной веб-разработки замыкания (closures) представляют собой один из фундаментальных концептов языка JavaScript, который часто вызывает затруднения у начинающих разработчиков, но при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru