М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 28 августа 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

C++ №72 /cpp/ 13 июня, 12:01 1208905 В конец треда | Веб

32 Кб, 600x4007,2 Мб, 3840x2555

Вместо шапки — https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы:
- http://en.cppreference.com/w/
- http://www.cplusplus.com/reference/

Прошлый: >>1196791 (OP)

Ответы09028092841061411994132311751221598

13 июня, 14:32 2 1209028

>>1208905 (OP)
>cppmap3

Сохранил. Это шедеврально

13 июня, 14:47 3 1209043

Так что скажете насчет скрытых приведений?
Могут быть UB из-за них или что самое худшее может произойти?

Ответы09110

13 июня, 16:11 4 1209110

>>1209043
UB с точки зрения языка - нет, а вот тебя неявные приведения могут запутать, собственно поэтому анализаторы многих современных IDE подсказывают помечать explicit конструктор с одним аргументом.

13 июня, 19:50 5 1209273

2ch, можно-ли изменить имя для унаследованной переменной?

Ответы09280

13 июня, 19:58 6 1209280

>>1209273
Сделать ссылку на переменную?

Ответы09282

13 июня, 20:03 7 1209282

>>1209280
Ссылка никуда не спрячет старую переменную и добавит перерасход памяти.

13 июня, 20:07 8 1209284

>>1208905 (OP)
ебать вы лохи

13 июня, 22:48 9 1209425

Сколько получаете денег? Чем занимаетесь?

13 июня, 22:54 10 1209431

Еще один вопрос по гигиене ключевых слов (или не знаю, как это назвается, проектирование что-ли)

Есть у меня дерево поиска и в нем Шаблонный метод (паттерн то есть). В самом базовом классе все обходы объявлены как const и фактически они const и есть. Нужно только зафиксировать один ма-а-аленький флажок — он представлен статической переменной.

Зашквар в том, что статическую переменную-то всё равно нельзя менять из const метода, а раз весь обход const, то и его шаблонные методы тоже const. Я выкручиваюсь из этого так: static bool★ flag; Тогда вестимо менять можно, это же не поле, а указатель куда-то наружу.

Я нарушаю какой-нибудь из принципов типа SOLID, когда так делаю, может это ломает инкапсуляцию или еще какие-то есть аргументы против? Интуиция навевает тревогу на этот счет, но опыта прознать самому недостает. Подскажите, допустим ли мой подход или что не так?

Ответы09445

13 июня, 23:11 11 1209445

>>1209431
В С++ даже специальное ключевое слово до этой хуйни есть - mutable. Правда он только для нестатических переменных, видимо у тебя код особенно ебанутый.

Ответы09495

13 июня, 23:52 12 1209477

Пизда вы тут все умные

Ответы09505

14 июня, 00:36 13 1209495

>>1209445
спасибо, бро, век живи

14 июня, 00:51 14 1209505

>>1209477
Я тупой, и когда вижу 60 сообщений в треде, захожу с ужасом

14 июня, 10:20 15 1209582

>>1209259
>С++ использует треды, предоставляемые ОС. ОС предоставляет настоящие железные треды
Да я уже понял. Но есть другой вопрос. Если я пишу на винде, что лучше использовать, std::thread или встроенные функции для мултитрединга из WinAPI?

Ответы09590

14 июня, 10:26 16 1209590

>>1209582
std::thread по сути обёртка над винапи (в винде), однако он удобнее, хотя бы тем, что с ним можно использовать лямбды. А вообще если пишешь CLI, то рекомендую перекатиться в раст. Там писать многопоточные приложения гораздо удобнее.

Ответы10274

15 июня, 11:53 17 1210273

Антоны, начал работать с QT. Встретил в статье подобное объявление:
>QScrollArea* scroll = new QScrollArea();
Здесь память выделяется под объект из кучи, да? Но далее в статье не было:
>delete scroll
Разве от такого не будет утечек? Или QT сам об этом заботится?

Ответы10276

15 июня, 11:55 18 1210274

>>1209590
Можно еще Go, чтобы делать горутины по каждому поводу.

15 июня, 12:01 19 1210276

>>1210273
delete qtObject; использовать не рекомендуется. Правильно делать так:
scroll->deleteLater();
scroll = nullptr;
Тогда удаление объекта запишется в цикл событий и он будет удалён когда все текущие события (которые возможно уже затрагивают данный объект) будут обработаны.

Алсо, можно сделать так QScrollArea* scroll = new QScrollArea(this); если создаёшь объект внутри другого QObject'a тогда scroll удалится вместе с родителем и вызывать deleteLater уже не надо будет.

Ответы10281

15 июня, 12:06 20 1210281

>>1210276
Хм, спасибо. А в статье значит ошибка и там будет утечка?

Ответы10282

15 июня, 12:10 21 1210282

>>1210281
Если используется QML, то при передаче QObject'a внутрь javascript'a по умолчанию за объект начинает отвечать сборщик мусора. Однако если используешь виджеты, либо не передаёшь объект в QML-код, то будет утечка.

Ответы10283

15 июня, 12:11 22 1210283

>>1210282
Спасибо за ответ. QT стоит учить? Есть будущее/вакансии?

Ответы10324

15 июня, 13:11 23 1210324

>>1210283
>QT стоит учить?
Это сейчас основной фреймворк для гуя на крестах. Он практически везде, как дельфи в 99. И жить будет очень долго.

379 Кб, 600x543
15 июня, 14:47 24 1210386

Перекатываясь на С++ с некоторого джава-подобного языка, лучше начинать с С, или сразу С++?

Ответы1042510433

15 июня, 15:34 25 1210425

>>1210386
"Лучше" - плохое слово. я писал на плюсах N лет, но знакомство с сишкой сильно пошло мне на пользу потом.

15 июня, 15:44 26 1210433

>>1210386
С модернового С++. Байтопарашу потом выучишь, если припрет

Ответы10477

15 июня, 16:50 27 1210477

>>1210433
this

И K&R для разминки мозгов, или периодического почитывания.

15 июня, 18:50 28 1210562

http://rextester.com/YQWSZ29753
Что не так с конструктором?

Ответы10565

7 Кб, 368x120
15 июня, 19:00 29 1210565

>>1210562
Пикрелейтед забыл. Без него он вызывает конструктор по-умолчанию, которого в parent нету.

6 Кб, 644x382
15 июня, 21:15 30 1210614

>>1208905 (OP)
Подкиньте годных идей, что можно запилить в одно рыло.

Ответы1068219723

15 июня, 23:30 31 1210682

>>1210614
https://2ch.hk/pr/res/1134574.html (М)

15 июня, 23:51 32 1210693

Навеяно:
> https://habr.com/post/414253/

Какой самый кошерный способ реализовать прокси, если нужно обернуть только один метод, а в интерфейсе их сотни? Не оборачивать же все руками?

Сделал через шаблон, но чую подвох.
https://ideone.com/GerHB6

106 Кб, 1000x989
16 июня, 00:12 33 1210699

Пытаюсь в гуёвые тулзы. Накатываю Нпроклятья.
Вопрос, есть некое приложение которое должно выводить постоянно хуйню на экран, и проверять действия пользователя.
Как я понимаю я делаю вайл-тру цикл и ловлю нажатия, вызываю по ним функции, а потом запускаю некую хуйню которая по новым данным перерисовывает весь экран.
Я так понимаю что это типа событийно ориентированное программирование. Где почитать об этой парадигме и как это принято делать?
Алсо, где посмотреть стандарты на форматирование кода, они конечно каждые свои для каждой компании я понимаю, но есть же некий усреднённый стандарт.

Ответы10701

16 июня, 00:20 34 1210701

>>1210699
Какая платформа? У тебя голый WinApi?
Возьми Qt, там всё на сигналах сделано. Читай гайды по тому API, с которым работаешь, а не про парадигмы.

Ответы10705

16 июня, 00:26 35 1210705

>>1210701
>Какая платформа?
Linux пишу под консоль + ncurses.h
>Возьми Qt
Слишком долго разбираться, я пока в консолечке поплескаюсь, мне понять суть процесса, а конкретный фреймворк уже после.

Ответы10714

120 Кб, 416x301
16 июня, 00:27 36 1210706

Прочитал месяца 2-3 назад Липмана страниц 500,дико заебался и забил хуй.Анон,посоветуй какую-нибудь книжку по крестам чтоб шишка стояла и задачки были.

Ответы107211132612919

16 июня, 00:37 37 1210714

>>1210705
Хочешь консольную аркаду запилить?
Я бы на твоём месте сделал 2 треда, один в цикле полит getch() и кидает в очередь события, другой отрисовывает в консольку по событиям от предыдущего треда и может таймеру например.
Для этого тебе понадобятся мютекс и conditional variable.
Может я херню предлагаю, попробуй поискать либы для твоей задачи.

Ответы10719

16 июня, 00:41 38 1210719

>>1210714 ой, мне пока до трэдов ещё срать и срать. Я только только ООП закончил дочитывать. Впереди ещё шаблонная магия и купание в STL. Я не знаю даже как прерывания работают, лол.

Ответы10771

16 июня, 00:43 39 1210721

>>1210706
>Прочитал
Писать примеры надо было. Заебался он. Уходи, кресты не для слабых духом.

Ответы10726

16 июня, 00:57 40 1210726

>>1210721
> кресты не для слабых духом
Я тут низкоуровневое легаси говно грёб и впал в отчаяние немного, дикая шизофазийная помесь условной компиляции, ассемблера, ещё какой-то загадочной хуйни вроде подобия самописной ОС, исходников от которой нет и ещё много приколов. А коду 20 лет, там в комментариях прописана дата, лол. 99 год. Просто высказался.

16 июня, 06:27 41 1210771

>>1210719
>Впереди ещё шаблонная магия
Там тебя пиздец ждет, смотры на бутылку не сядь.

16 июня, 10:44 42 1210817

Шарит кто в Qt? Почему я из таблицы могу взять выделенный индекс (currentIndex()), а вот индекс из определённого столбцы и колонки он не берёт (index()?

Ответы11102

16 июня, 17:20 43 1211102

>>1210817
Напиши что хочешь, но по человечески.

16 июня, 17:38 44 1211125

Анон, вопрос по QT.
Есть программа. Она может открываться как в обычном окнонном виде, так и в виде трей-иконки, которая позволяет по клику открыть оконный вид.
В программе могут открываться новые QWidget по клику на кнопки.

Код открытия
someform = new Someform(privateData);
someform->setAttribute(Qt::WA_DeleteOnClose, true);
connect(someform, SIGNAL(goodData(QStringList)), SLOT(updatePrivateData(QStringList)));
someform->show();

При закрытии форма отсылает сигнал в основную программу и закрывается.
Код закрытия
emit goodData(privateData);
close();

Если программа изначально запускается в оконном виде, то всё работает нормально.
Если программа запускается сначала в трей, а затем появляется её окно по клику, то закрытие нового QWidget ведёт к последующему за ним закрытию и основной программы.
Код разворачивания оконного вида
this->setWindowFlags(Qt::Window);
trayIcon->show();
this->show();

Код запуска в оконном виде
this->show();

Код запуска в трэй виде
this->setWindowFlags(Qt::Tool);
trayIcon->show();

Собственно вопрос - почему закрытие нового окна QWidget ведёт в трей-случае к закрытию и основного окна приложения? Как это можно отловить и отладить пошаговое исполнение ничего не показывает?

16 июня, 17:38 44 1211125

Анон, вопрос по QT.
Есть программа. Она может открываться как в обычном окнонном виде, так и в виде трей-иконки, которая позволяет по клику открыть оконный вид.
В программе могут открываться новые QWidget по клику на кнопки.

Код открытия
someform = new Someform(privateData);
someform->setAttribute(Qt::WA_DeleteOnClose, true);
connect(someform, SIGNAL(goodData(QStringList)), SLOT(updatePrivateData(QStringList)));
someform->show();

При закрытии форма отсылает сигнал в основную программу и закрывается.
Код закрытия
emit goodData(privateData);
close();

Если программа изначально запускается в оконном виде, то всё работает нормально.
Если программа запускается сначала в трей, а затем появляется её окно по клику, то закрытие нового QWidget ведёт к последующему за ним закрытию и основной программы.
Код разворачивания оконного вида
this->setWindowFlags(Qt::Window);
trayIcon->show();
this->show();

Код запуска в оконном виде
this->show();

Код запуска в трэй виде
this->setWindowFlags(Qt::Tool);
trayIcon->show();

Собственно вопрос - почему закрытие нового окна QWidget ведёт в трей-случае к закрытию и основного окна приложения? Как это можно отловить и отладить пошаговое исполнение ничего не показывает?

Показать весь текст
Ответы1113611256

16 июня, 17:45 45 1211136

>>1211125
Да, и если "закрывать" новое окно не методом close(), а методом hide(), то всё работает норм.

Ответы11256

16 июня, 20:19 46 1211256

>>1211136
>>1211125
Проблема почти решена
qApp->setQuitOnLastWindowClosed(0);

С очевидностью, основное окно не считается открытым и закрытие дочернего виджета приводит к выходу.

Спасибо за консультацию.

Ответы11267

16 июня, 20:25 47 1211267

>>1211256
Наверное забью на то чтобы сделать основное окно настоящим окном после разворачивания.
qApp->setQuitOnLastWindowClosed(0);
достаточно.
Костыли-костылики

16 июня, 21:21 48 1211326

>>1210706
Страуструпа голубую

16 июня, 22:14 49 1211355

Пиздец этот Qt параша, хуже фреймворка ещё не видел.

17 июня, 13:33 50 1211663

Продолжая тему QT.

Требуется изменить поведение программы при закрытии.
Если закрытие идёт через крестик справа-вверху, то поведение одно.
Если закрытие идёт любым другим способом, то поведение другое.

В инетрнете предлагают переопределить QCloseEvent, но в этом случае я не могу определить отправителя CloseEvent и сделать вариативное поведение.

Пока, единственный вариант который я вижу - хук на мышь и отлавливание её положения и клика, но это звучит по идиотски. Есть нормальный вариант?

Ответы11744

17 июня, 15:16 51 1211744

>>1211663
В сам евент вложить id отправителя, нЭ?

Ответы11780

17 июня, 16:09 52 1211780

>>1211744
QObject::sender() при закрытии нажатием на крестик даёт nullptr

140 Кб, 879x695
17 июня, 18:37 53 1211896

Что-то я так охуел от ваших крестов............
Зачем нужны все эти сложные различные касты?
Какое нахуй виртуальное наследование и касты между классами. У меня от звездочек и амперсандов уже в глазах рябит, все равно нихуя не понимаю base-derived нахуй. А exception-safety? Почему такие уебские исключения? Нахуй вы живете?

Ответы1198212197

17 июня, 19:53 54 1211967

Знаю Си, хочу быстро начать писать на крестах. Что читать?

Ответы11968

17 июня, 19:54 55 1211968

>>1211967
шапку треда

Ответы11978

17 июня, 20:12 56 1211978

>>1211968
Не нашел ничего конкретного. Ткни носом, если не сложно.

17 июня, 20:16 57 1211982

>>1211896
Но ведь все логично.

17 июня, 20:36 58 1211994

>>1208905 (OP)
Анон, вопрос от дауна-аутистаменя. Хочу считать кусок строки с одного символа до другого. Как это сделать?

Ответы12009

17 июня, 21:05 59 1212009

>>1211994
Есть такая штука - гугл. Тебе туда
https://ideone.com/3sn2oB

Ответы12016

17 июня, 21:25 60 1212016

>>1212009
Этот код мне нихуя не показывает. И я на столько тупой, что не могу просто по внешнему виду понять, как он работает

Ответы12051

17 июня, 22:20 61 1212051

>>1212016
Он копирует строку начиная с определённой комбинации символов, посмотри просто на вывод идеона и на то, что подают на входу внутри функций.
Причём тебе даже два варианта дали на си и на крестах.

18 июня, 08:29 62 1212197

>>1211896
Почти все что ты описал есть и в других языках, например C#. Ты видимо васян пришел из скриптовых языков.

18 июня, 15:09 63 1212424

Сап двач. Помогите, пожалуйста, с заданием.
Написать программу учета заявок на обмен квартир и поиска вариантов обмена. Каждая заявка содержит сведения о двух квартирах: требуемой (искомой) и имеющейся. Сведения о каждой квартире содержат: количество комнат, площадь, этаж, район. Программа должна обеспечивать выбор с помощью меню и выполнение одной из следующих функций:
• ввод заявки на обмен;
• поиск в картотеке подходящего варианта: при совпадении требований и предложений по количеству комнат и этажности и различии по показателю «пло-щадь» в пределах 10% выводится соответствующая карточка и удаляется из списка, в противном случае поступившая заявка включается в картотеку;
• вывод всей картотеки.
Хранение данных организовать с применением реализованного вами контейнерного класса set.

Никак не могу понять, как мне реализовать второй пункт задания. Просто совсем идей нет. С меня тонны нефти. ЯП c++.
Свой код могу скинуть, но, думаю, лучше на фейко почту

Ответы124501245912536

18 июня, 15:26 64 1212450

>>1212424
Сколько платишь?

Ответы12453

18 июня, 15:27 65 1212453

>>1212450
200 рублей на карте есть. Больше денег тупо нет. У меня почти все готово, кроме реализации второго пункта.

18 июня, 15:29 66 1212459

>>1212424
>поиск в картотеке подходящего варианта: при совпадении требований и предложений по количеству комнат и этажности и различии по показателю «пло-щадь» в пределах 10% выводится соответствующая карточка и удаляется из списка, в противном случае поступившая заявка включается в картотеку;
Расскажи попа дробнее и попа нятнее. Картотека в каком виде? SQL-таблица? В картотеке 2 типа объектов - заявки и предложения, так?

Ответы12465

18 июня, 15:32 67 1212465

>>1212459
Нет. У меня просто бинарный файл. В нём записаны структуры состоящие из целой заявки. То есть там сразу и имеющаяся квартира и желаемая. С этим мне особо заморачиваться не надо. У меня же не серьёзный проект, а просто курсовая.

Ответы12479

18 июня, 15:39 68 1212479

>>1212465
Ну так а в чем проблема тогда в написании поиска?
У тебя есть массив структур
1. Проходишь циклами по структурам, сначала по типу (имеется или требуется), затем по комнатам, потом по этажности, потом по площади
2. Если есть совпавшие результаты, удаляешь их из базового массива, ресайзиш массив, и выводишь совпавшие куда нужно
3. Если нет, то добавляешь. в массив данные своего запроса

Ответы12485

18 июня, 15:41 69 1212485

>>1212479
Я понимаю сам алгоритм. Я не могу разобраться, как мне сравнивать элементы структур. Если бы я имел дело просто со значениями, то всё было бы ясно, но мне же нужно сравнить элементы структур. Я и не могу разобраться как это сделать. А примеров не нашёл в инете

Ответы1249512506

18 июня, 15:47 70 1212495

>>1212485
Придумай сам.
Если в математике понимаешь - то решение очевидно.
А если нет - то иди нахуй

Ответы12500

18 июня, 15:51 71 1212500

>>1212495
Да я, вроде, в матиматике более-менее. Но вот в программировании не очень. В том плане, что я немного не понимаю сути указателей. То есть, используя указатель, я же ссылаюсь на структуру. А как из неё мне выделить элементы. То есть, допустим, заполняя таблицу я обозвал свою структуру k. Но тогда все структуры у меня k. Вроде, всё очевидно, и всё зависит от ключа, на который указывает указатель, но всё равно туплю с этим

18 июня, 15:58 72 1212506

>>1212485
Ну вот тебе примерная логика работы в коде

struct Data
{
bool type;
int rooms;
int floors;
float S;
};

Data d[123];
Data matches[123];
....

for (int i = 0, m = 0; i < 123; i++) {
if (queryType != d.type) {
continue;
}
if (queryRooms != d.rooms) {
continue;
}
if (queryFloors != d.floors) {
continue;
}
if (queryS < d.S 0.95 || queryS > d.S 1.05) {
continue;
}
matches[m] = d;
m++;
removeApartment(data);
}

if (matches.count > 0) {
print(matches);
} else {
data.resize(124);
data[123] = query;
}

18 июня, 15:58 72 1212506

>>1212485
Ну вот тебе примерная логика работы в коде

struct Data
{
bool type;
int rooms;
int floors;
float S;
};

Data d[123];
Data matches[123];
....

for (int i = 0, m = 0; i < 123; i++) {
if (queryType != d.type) {
continue;
}
if (queryRooms != d.rooms) {
continue;
}
if (queryFloors != d.floors) {
continue;
}
if (queryS < d.S 0.95 || queryS > d.S 1.05) {
continue;
}
matches[m] = d;
m++;
removeApartment(data);
}

if (matches.count > 0) {
print(matches);
} else {
data.resize(124);
data[123] = query;
}

Показать весь текст
Ответы1250812518

18 июня, 15:59 73 1212508

>>1212506
И конечно же во всём цикле for не d, а d

Ответы12512

5 Кб, 514x208
18 июня, 16:00 74 1212512

>>1212508
Сука не d, а d
Макаба блэд

18 июня, 16:05 75 1212518

>>1212506
Если я правильно понял твой код, то ты выводишь просто совпадения отдельных элементов. Да и в любом случае это не то, что мне нужно. Но спасибо за пример

Ответы12522

18 июня, 16:09 76 1212522

>>1212518
>Если я правильно понял твой код, то ты выводишь просто совпадения отдельных элементов
Ты понял неправильно.
В цикле сначала сравнивается тип. Если он не совпадает, то переход к другому элементу массива квартир
Затем сравнивается комнатность. Если она не совпадает, то переход к другому элементу массива квартир
Затем сравнивается этажность. Если она не совпадает, то переход к другому элементу массива квартир
Затем сравнивается площадь. Если она не совпадает, то переход к другому элементу массива квартир
Если есть 4 совпадения, то заносим совпавшую квартиру в массив совпавших квартир. Переходим к другому элементу массива квартир.

Ещё можно перегрузить оператор сравнения и тогда вообще будет збс. Но по факту то же самое, только красивее

Ответы1252812530

18 июня, 16:14 77 1212528

>>1212522
Мне кто-то рассказывал вот про твой стиль программирования. Назывался "даунский" ааа "макака" вот.

Ответы12529

18 июня, 16:16 78 1212529

>>1212528
Научите меня лучше, семпай.

Ответы12531

18 июня, 16:17 79 1212530

>>1212522
Я, вроде, понял суть. Но блять это всё равно не то. У меня же типо дерево там есть. И надо с его помощью перемещаться. Подобным образом, что у тебя описан, я бы и сам, думаю, написал.

18 июня, 16:18 80 1212531

>>1212529
https://courses.ifmo.ru/courses/ITMO/x1006.00/spring_2016/about

Ответы12639

18 июня, 16:24 81 1212536

>>1212424
Чо там сложного? Вот тебе самая простая версия: https://pastebin.com/nStPJhyK

Ответы12538

18 июня, 16:28 82 1212538

>>1212536
Я не могу использовать почти ничего готового. А тут есть вектор. Плюс мне надо самостоятельно реализовать set. И ещё реализовать "хранение в файле".

Ответы1254012549

18 июня, 16:31 83 1212540

>>1212538
> Я не могу использовать почти ничего готового.
Ну тогда всего хорошего и удачи.

Ответы12544

18 июня, 16:35 84 1212544

>>1212540
Спасибо

18 июня, 16:37 85 1212549

>>1212538
Начни решать задачу последовательно, разбив на подзадачи.
Для начала разберись с сохранением своего дерева в файле и с загрузкой его оттуда.

Ответы12551

18 июня, 16:39 86 1212551

>>1212549
Да я всё сделал. Хуёво, конечно, но сделал. Мне вот только этот второй пункт и остался.

Ответы12561

18 июня, 16:44 87 1212561

>>1212551
Так обожжи. Что конкретно у тебя не получается то? Обход дерева? Сравнение структур? Добавление к дереву? Удаление из него?

Ответы12569

18 июня, 16:51 88 1212569

>>1212561
Второй пункт. То есть обход дерева со сравнением структур. Удаление я, вроде, понял как делать, но ещё не проверял.
Конкретно меня интересует, как обойти дерево и сравнить элементы.

Ответы12576

18 июня, 16:56 89 1212576

>>1212569
Дай код твоего дерева >> Pastebin

Ответы12580

18 июня, 16:58 90 1212580

>>1212576
вот так вот вроде
https://pastebin.com/T6RsixYU

Ответы12589

18 июня, 17:06 91 1212589

>>1212580
>https://pastebin.com/T6RsixYU
Код дерева можно модифицировать?

Ответы1259212626

18 июня, 17:07 92 1212592

>>1212589
Да, без проблем

18 июня, 18:12 93 1212626

>>1212589
>kvartira
Ты уверен, что тебе нужно сдавать курсач?
Алсо в чем проблема вообще. Ты говоришь, что не знаешь как сравнивать структуры, но при этом функция добавления в дерево у тебя есть, как ты тогда добавляешь в дерево, если не знаешь, как сравнивать?.

Ответы12632

18 июня, 18:17 94 1212632

>>1212626
С добавлением я кое-как разобрался, в том числе с помощью примеров. А когда дошло до сравнения я задумался. Не могу понять как это происходит. Даже не знаю как объяснить правильно.

18 июня, 18:39 95 1212639

>>1212531
Сколько стоит?

18 июня, 23:02 96 1212859

Вот крч начало для твоего дерева.
https://pastebin.com/6C6NsK0K
Ща меня хуями закидают

Ответы12866

18 июня, 23:05 97 1212866

>>1212859
Крч я не допилил там удаление из основной базы - потому что удалять сразу после запроса - тупо.
И я не допилил внесение в базу если запрос не даёт результатов.
Но эти оба пункта достаточно очевидны и просты.

18 июня, 23:58 98 1212919

>>1210706
>месяца 2-3 назад Липмана страниц 500,дико заебался и забил хуй
я, к примеру, прочитал 90% книг из этого треда
это касается только с++, само собой
http://rsdn.org/forum/cpp/7076091.flat
я, кстати, безработная хуйня, которую даже на двадцаточку не берут

Ответы12967

19 июня, 01:08 99 1212967

>>1212919
Может себе портфолио делаешь какое?

Ответы1298013002

19 июня, 01:25 100 1212980

>>1212967
Правильный вопрос "может кодить научишься, читать даже школьники успеют".

19 июня, 03:03 101 1213002

>>1212967
какое "портфолио", епт? я после вуза неск лет сидел в одной конторе, исправлял ошибки и запиливал фичи в легаси, это же крестоблядство и все
..

19 июня, 03:20 102 1213007

Сижу и не могу понять, может кто пояснит
если к примеру создать 2 массива и забить в них одинаковый текст
int main()
{
char x = "-pwtb";
char y = "-pwtb";

if (x == y)
cout << "1" << endl;// и сделать такую проверку

}

то будет вывод единицы

если же забить тоже самое как аргумент из командной строки

int main(int argc, char argv[]) //и ввод в консоль nameprogram.exe namefile.bin -pwtb
{
char x = "-pwtb";
if (x == argv[2]) //где argv[2] должен быть равен тому же "-pwtb"
cout << "1" << endl;
}

вывода единицы не будет, почему? @_@

19 июня, 03:20 102 1213007

Сижу и не могу понять, может кто пояснит
если к примеру создать 2 массива и забить в них одинаковый текст
int main()
{
char x = "-pwtb";
char y = "-pwtb";

if (x == y)
cout << "1" << endl;// и сделать такую проверку

}

то будет вывод единицы

если же забить тоже самое как аргумент из командной строки

int main(int argc, char argv[]) //и ввод в консоль nameprogram.exe namefile.bin -pwtb
{
char x = "-pwtb";
if (x == argv[2]) //где argv[2] должен быть равен тому же "-pwtb"
cout << "1" << endl;
}

вывода единицы не будет, почему? @_@

Показать весь текст
Ответы13008130131301913052

19 июня, 03:28 103 1213008

>>1213007
перед x и y "*" естесн

19 июня, 04:37 104 1213013

>>1213007
Потому что ты сравниваешь адреса, а не содержимое массивов.

19 июня, 07:12 105 1213019

>>1213007
>то будет вывод единицы
Видимо умный компилятор запихал два одинаковых строковых литерала в один.
А вообще строки сравниваются не так.

Ответы13274

19 июня, 10:03 106 1213052

>>1213007
Как чел выше написал, компилятор видимо использовал одну и ту же строку в памяти для обоих чаров. С if (x == y) ты просто сравниваешь адреса на которые они указывают, a так как строка физически одна и та же, то и адреса у них одинаковые. Если хочешь конкретно сравнивать строки, то используй функцию strcmp(), только тут внимательно, если строки одинаковые, функция возвращает 0.
https://ideone.com/HVKV4e

Ответы13274

48 Кб, 800x729
19 июня, 13:24 107 1213152

Ананасы, памагите
Нужно изменить размер массива структур функцией. Вот примерно:
strc mas = new strc[dohuja]; //strc какая-то структура
strc uvelichenie(strc mas) {
strc newm = new strc[len+1];
for(int i=0; i<len; i++) {
newm=mas
}
return newm;
}
Функция создает новый массив на еденичку длинее и переписывает все указатели из старого и дописывает что-то новое но не суть
Вопрос в том как дальше воспользоватся функцией что бы массив mas увеличить и он остался с названием mas.
mas = uvelichenie(mas); Такое вроде как не работает, и я не ебу как грамотно реализовать увеличение

Ответы131541315613168

19 июня, 13:34 108 1213154

>>1213152
Переделать всё, так дела не делаются.

19 июня, 13:37 109 1213156

>>1213152
>что бы массив mas увеличить и он остался с названием mas.

delete mas;
mas = new strc[len+1];
mas = newm;

Ответы13174

19 июня, 13:54 110 1213168

>>1213152
> Нужно изменить размер массива структур функцией. Вот примерно:
Изич. Вот код: https://ideone.com/aoRuLo

19 июня, 14:14 111 1213174

>>1213156
Данные в старом массиве проебал

Ответы1317613186

19 июня, 14:16 112 1213176

>>1213174
Хотя не проебал
Но все равно не совсем то

Ответы13186

19 июня, 14:45 113 1213186

>>1213174
Ну так они не нужны по условию.
Да и я траллел
>>1213176
Вот почти рабочий код https://ideone.com/LqS007

142 Кб, 1080x1301
19 июня, 16:54 114 1213231

>>1208905 (OP)
ОЧЕНЬ ВАЖНО

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

Ответы1323913258133691399814420

19 июня, 17:02 115 1213239

>>1213231
угу угу
будешь вместе с толпами июней в ай-ти назад врываться
хех
ну ну, докажы чем ты лучше молодого мяса

Ответы13250

19 июня, 17:14 116 1213250

>>1213239
Во-первых у меня опыт, во-вторых, мне надо как раз подготовиться хорошо. Потому я и спрашиваю.
Алсо, молодое мясо обычно она днищеработу берут, а я на норм зп и проект устраиваюсь.

Ответы1325213443

19 июня, 17:18 117 1213252

>>1213250
1. Идёшь на фриланс сайт
2. Смотришь заказы-заказики для макак
3. Выполняешь
Опционально можешь списаться с заказчиком и попросить денег.

Ответы13256

19 июня, 17:21 118 1213256

>>1213252
Какие нахуй заказы по С++? Такой способ хуйня какая-то. У меня времени до пятницы, мне надо что-то обширное по цпп пройти.

19 июня, 17:23 119 1213258

>>1213231
1. Вот эту хуету выборочно полистай.
https://books.goalkicker.com/CPlusPlusBook/
2. И ещё что-нибудь по алгоритмам и структурам (тот же гуголь вполне сгодится).
3. Сгоняй на пару собесов в конторы, до которых тебе похуй и затем повтори 1 и 2.

Ответы13265

19 июня, 17:38 120 1213265

>>1213258
>https://books.goalkicker.com/CPlusPlusBook/
Вроде годно, на первый взгляд, сенкс.

>2. И ещё что-нибудь по алгоритмам и структурам (тот же гуголь вполне сгодится).
Ну по алгоритмам я особо задрить не буду, ибо в свое время задрил, просто повторю самые популярные структуры и алгоритмы.

>3. Сгоняй на пару собесов в конторы, до которых тебе похуй и затем повтори 1 и 2.
Вот это да, записался на один как раз на пятницу.

19 июня, 18:05 121 1213274

>>1213019
>>1213052
Спасибо аноны, разобрался.

19 июня, 20:17 122 1213369

>>1213231
>Устраиваюсь после долгого перерыва на работу, уже порядком подзабыл С++, поэтмоу нужно как-то все это срочно повторить перед собесом.
http://cppquiz.org/

19 июня, 22:26 123 1213443

>>1213250
хуя ты самоуверенный
вот меня "после долгого перерыва" везде куда ходил нахуй посылали еще на этапе хрющ
и, канеш, тебе надо было весной идти, лето мертвое время плюс толпы июней, повторюсь
какое-то оживление будет осенью еще, после того как люди что пришли весной уволятся или их уволят - те освободятся места где не сраслось у работника с фирмой..

Ответы1348513998

19 июня, 22:43 124 1213448

йобушки-байтойобушки

20 июня, 00:58 125 1213485

>>1213443
>не сраслось
А я вот ходил и получал предложения после трёхлетнего перерыва (стаж на тот момент был около 10 лет). Июней вообще не заметил - они между собой соревновались за более низкие позиции. Ну а летом, оно да, вакансий поменьше, но для опытного спеца их всё равно хватает.

20 июня, 06:51 126 1213524

Почему студия билдящая под 64 бита не поддерживает ассемблерные вставки?

Ответы1353013551

20 июня, 07:55 127 1213530

>>1213524

Потому что харе байты ебать, приборчик порешает, интелу тоже кушать надо.

20 июня, 09:44 128 1213551

>>1213524
Ебашь кодами в char[], вызывай платформозависимую хуйню которая будет снимать NX и выполняй, ну что ты как сыч.

Ответы135611356713675

20 июня, 10:16 129 1213561

>>1213551
> char[]
Тогда уж unsigned char, а ещё лучше нормальный алиас uint8_t.

20 июня, 10:32 130 1213567

>>1213551
>Ебашь кодами в char[], вызывай платформозависимую хуйню которая будет снимать NX и выполняй, ну что ты как сыч.

Можно. Но нахуя?

https://github.com/asmjit/asmjit

20 июня, 14:28 131 1213675

>>1213551
>которая будет снимать NX
Не понял тебя к сожалению.

Ответы1368613769

20 июня, 14:49 132 1213686

>>1213675
>Не понял тебя к сожалению.

https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa366887(v=vs.85).aspx

http://man7.org/linux/man-pages/man2/mmap.2.html

Ответы1369813769

20 июня, 15:07 133 1213698

>>1213686
Вот это байтоебские дебри! Спасибо.

20 июня, 16:46 134 1213769

>>1213675
Он >>1213686 уже всё объяснил, правда есть одно "но" - конкретно в винде вместо VirtualAlloc в куче, записи в кучу и вызова бывает удобнее записать код в статическую память (ну там char foo[] = {0x90, 0x90, ...};), сделать VirtualProtect по его адресу и ((void*)()foo)(), не надо ничего лишний раз записывать.

Ответы13777

20 июня, 16:51 135 1213777

>>1213769
По-моему я объебался с синтаксисом, надо так:
((void(*)())foo)();

20 июня, 18:03 136 1213843

Как сделать чтобы visual studio запускал тот файл, который сейчас редактируется?

20 июня, 18:10 137 1213853

Есть класс, который есть абстракция приложения. У приложения есть графические пассивные элементы (надписи и иконки). Их всего в районе 5-7 и возник вопрос как лучше внедрить поддержку хранения этих элементов в класс.

Создать отдельный метод для каждого графического элемента?
Или создать список, на подобии Map и вызывать их по ключу?
Или создать вообще отдельный класс для их хранения?

Предположим, чтобы поменьше париться для текущих 7 элементов проще и правда создать отдельные элементы.

Предположим, что их больше, в районе 70. Как в таком случае реализовать их хранение в классе?

Интересует именно как правильно это сделать, а не "ну, работает жи".

20 июня, 20:21 138 1213998

>>1213443
Хз, мне за 2 дня после публикации резюме на ХХ, пришло вакансий 20 уже, при чем они ахуели, кидают на почту, в телегу, звонят я уже думаю закрыть на время, т.к. я уже даже не успеваю читать все.

>>1213231 - анон

Ответы1435215056

20 июня, 21:51 139 1214079

Намного ли плюсы сложнее шарпа? Не знаю что выбрать. Хочу вкатиться, но боюсь обосраться.

Ответы140871414214351

20 июня, 22:02 140 1214087

>>1214079
Намного. Плюсы является своего рода океаном. Зато на шарпе ты стабильно найдешь работу на галере.

Ответы14142

20 июня, 22:54 141 1214142

>>1214079
Пердачую этого >>1214087
Плюсы плохая идея для вкатывания, шарп норм.

15 Кб, 500x332
21 июня, 02:40 142 1214331

АААААААААААААА БЛЯД!Ь АААА СУКА СУКА СУКА!!!
Тип объекта меняется по мере работы конструктора/деструктора, версия виртуальной функции выбирается в соответствии с текущим типом объекта.
Как же больно.

Ответы1452014575

21 июня, 05:26 143 1214351

>>1214079
Ну оборёшься, делов-то. Вкатывай. Шарп - говно. А плюсы и в африке - плюсы.

21 июня, 05:28 144 1214352

>>1213998
Руби капусту пока горячо.

21 июня, 06:35 145 1214360

Кто-нибудь пишет на плюсах под ведро?

21 июня, 08:46 146 1214391

Двач, можно ли дополнить библиотекчные перечисления?

21 июня, 10:49 147 1214420

>>1213231
Как бабу звать на пике?

21 июня, 14:43 148 1214520

>>1214331
У меня тоже так.

21 июня, 16:05 149 1214575

>>1214331
Сука, а нахуй ты в конструкторе деструкторе полиморфизм используешь?

Ответы14879

21 июня, 17:24 150 1214620

Посоветуйте вменяемого объяснения placement new пожалуйста.

Есть такая задача https://stepik.org/lesson/563/step/7?unit=886 и абсолютно непонятное объяснение от авторов курса. Что они хотят? В каких книгах/гайдах это всё хозяйство объясняется?

Ответы146942000120819

21 июня, 17:27 151 1214624

2ch, унаследовался от класса, переопределил функцию, как узнать что за функция вызывает мою переопределённую функцию?

Ответы146361464214718

21 июня, 17:53 152 1214636

>>1214624
Самый простой - выбросить эксепшон и просмотреть в нём стек.

Ответы1464814718

21 июня, 18:02 153 1214642

>>1214624
Правда если идёт речь о C++, то всё гораздо сложнее. Придётся использовать библиотеки вроде libunwind и плюс конпелировать программу с отладочной информацией.

Ответы146481467014718

21 июня, 18:08 154 1214648

>>1214642
Просто я перепутал тред с ньюфаг-тредом.
>>1214636-кун

21 июня, 18:32 155 1214670

>>1214642
А в чем проблема запустить отладку и поставить на своей функции точку остановки? Выполнение остановится и по стенку вызовов можно будет посмотреть, что и откуда вызывается.

Ответы14676

21 июня, 18:35 156 1214676

>>1214670
Ну если с отладчиком, то да, просто. Но если хочешь что-то подобное в релизной версии, запущенной не у тебя, то начнётся дикий геморрой.

21 июня, 19:02 157 1214694

>>1214620
А что это за сайт такой?

Ответы14759

21 июня, 19:36 158 1214704

Приветствую.
Сейчас сижу на рекурсии, пытаюсь решить задачки, но что-то не особо получается.
Условие:
Даны два целых числа A и В (каждое в отдельной строке). Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.
Смотрел везде, подправлял, но ничего. Мне просто выводит одно число, но никак не целый ряд. Буду благодарен за помощь. Сам код :
#include <iostream>
#include <cmath>
using namespace std;
int function_new(int a, int b)
{
if (a > b)
{
if (a == b)
return a ;
return function_new(a - 1, b);

}
else
{
if (a == b)
return a ;

return function_new (a + 1, b);
}
}
int main()
{
int maximum, minimum, number1, number2;
cin >> number1 >> number2;
cout << function_new(number1, number2);
return 0;
}

21 июня, 19:36 158 1214704

Приветствую.
Сейчас сижу на рекурсии, пытаюсь решить задачки, но что-то не особо получается.
Условие:
Даны два целых числа A и В (каждое в отдельной строке). Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.
Смотрел везде, подправлял, но ничего. Мне просто выводит одно число, но никак не целый ряд. Буду благодарен за помощь. Сам код :
#include <iostream>
#include <cmath>
using namespace std;
int function_new(int a, int b)
{
if (a > b)
{
if (a == b)
return a ;
return function_new(a - 1, b);

}
else
{
if (a == b)
return a ;

return function_new (a + 1, b);
}
}
int main()
{
int maximum, minimum, number1, number2;
cin >> number1 >> number2;
cout << function_new(number1, number2);
return 0;
}

Показать весь текст
Ответы14713

21 июня, 19:44 159 1214713

>>1214704
https://ideone.com/31b319

Ответы1471714748

21 июня, 19:48 160 1214717

>>1214713
Спасибо!

21 июня, 19:48 161 1214718

>>1214624
>>1214636
>>1214642
Вы что дебилы?
Логи вам нахуя сделали?

Ответы14722

21 июня, 19:51 162 1214722

>>1214718
И как логи тебя спасут в случае необработанного системного эксепшона? В C++ проекте для того чтобы логгировать подобные вещи (да ещё и со стектрейсом) нужно использовать сторонние инструменты вроде breakpad'a.

Ответы14735

21 июня, 20:07 163 1214735

>>1214722
При чем тут эксепшн вообще? Если вопрос был:
>унаследовался от класса, переопределил функцию, как узнать что за функция вызывает мою переопределённую функцию?

Ответы14736

21 июня, 20:10 164 1214736

>>1214735
Ну да, конкретно у него ебанутое желание. Я просто говорю, что простых логов зачастую недостаточно и требуются реальные стектрейсы (пусть даже без встроенных функций). Жалко, что в стандарте нед средств для их нормального получения.

Ответы14738

21 июня, 20:16 165 1214738

>>1214736
Это вообще другой вопрос. На этот случай запускаешь через gdb, ставишь брекпоинт и смотришь. Ну или дамп делаешь.

Ответы14739

21 июня, 20:17 166 1214739

>>1214738
Не, я имею в виду, когда приложения выполняется у клиента где-то там.

Ответы14742

21 июня, 20:23 167 1214742

>>1214739
Ну remote gdb. Тем более я не понимаю в чем сложность эксепшена и к чему ты его приплел сюда, но на обработку эксепшена тоже можно логи поставить.
Я на пример почти всегда логами пользуюсь, да и если ты работаешь с какой-то низкоуровневой хренью, то других способов отладки просто не существует.

Ответы14745

21 июня, 20:26 168 1214745

>>1214742
> Ну remote gdb.
Речь про автоматическое логгирование. Или пусть клиент звонит и просит прогромиста подключиться к нему и пердолиться на его компьютере?
> да и если ты работаешь с какой-то низкоуровневой хренью, то других способов отладки просто не существует.
Есть breakpad. Очень годная вещь для логгирования крешей.

21 июня, 20:29 169 1214746

Анон, есть одна небольшая задача, написать плагин для kodi для input stream interface, который позволял бы проигрывать два куска видео как один. Небольшая задача. Но загвоздка в том, что в c++ я даже не пробовал практически ничего писать. Писал только на питоне последние месяца 4, и на прием эту задачу решить никак нельзя. Собственно вопрос, насколько эта задача будет для меня неподъемной? Сколько времени мне потребуется изучать минимум с++ чтобы реализовать эту задачу? На питоне над решением с помощью костылей я бьюсь уже около месяца, но нихуя не выходит. А решение на плюсах будет так сказать нативным, бескостыльным.
Спасибо

Ответы15359

21 июня, 20:31 170 1214748

>>1214713
А выход из этой рекурсии происходит из-за того, что через n-ое выполнение функции переменные становятся равными друг другу?

21 июня, 20:39 171 1214759

>>1214694
Это платформа типа Coursera, только преимущественно русскоязычная и полностью бесплатная.
Но качество объяснения хромает.

Так что насчет placement new и delete?

21 июня, 22:53 172 1214865

Бля завтра собес, я нихуя не готовился.

Поспрашивайте меня какие-нить типичные вопросы для собеса на мидла/сеньйора.

Ответы14875

21 июня, 23:00 173 1214875

>>1214865
Тебе не нужно готовиться раз ты претендуешь на сеньора, т.к. либо ты сеньор и все ок, либо ты не сеньор и вопросы тебе не помогут.

Ответы14903

21 июня, 23:01 174 1214879

>>1214575
Ни хуя себе "нахуй". По заветам Мейерса деструктор всегда виртуальный, чтобы производные классы норм уничтожались по цепочке вызовов.

21 июня, 23:30 175 1214903

>>1214875
Охуенный манямирок.

22 июня, 10:25 176 1215056

>>1213998
вопрос в том как много в них нормальных.
у меня резюме закрыто уже хрен знает сколько и всё равно пишут постоянно. но при этом это или кадровые агенства которые просто от балды рассылают что-то всем или люксофт.

Ответы15090

188 Кб, 1728x936
22 июня, 10:51 177 1215079

Сап, в чём проблема, я не пойму. В программу в ccnum будет вводиться через cin значение, и потом если первый символ 4 или 5, то будет писаться что это.

Ответы15084150851508819728

22 июня, 11:01 178 1215084

>>1215079
У тебя сложный код.
Попробуй
char ccnum = "4234567";

if (ccnum == '4') {
cout << "VISA";
}

Ответы1508715102

22 июня, 11:03 179 1215085

>>1215079
ты путаешь = и ==

4 Кб, 497x176
22 июня, 11:05 180 1215087

>>1215084
Вакаба всё съела

Ответы15102

22 июня, 11:06 181 1215088

>>1215079
Советую тебе дропать это дело, т.к. ты вообще не понимаешь, что происходит. Надеюсь банкоские карты ты взял как пример и это не задание на работе.

Ответы15096

22 июня, 11:11 182 1215090

>>1215056
>люксофт
Мне тоже они писали, вроде в берлин предлагали, но я отказался сразу.
А че есть инфа по ним?

Ответы15119

22 июня, 11:22 183 1215096

>>1215088
Нет, это в институте задание, просто решил взять проверку МастерКард или Виза, и потом сделать проверку правильности номера карточки.
Почему сразу дропать, если мне это нравится, и я хочу понять ошибки и продолжить изучение?

Ответы15108

22 июня, 11:27 184 1215102

>>1215084
>>1215087
Вводится какая-то карточка, к примеру "4000 0000 0000 0000".
Если первый символ 4, значит Виза, если 5, значит МастерКард. Я же правильно понял, что ccwrk подчёркивается из-за пустого значения? Если так, то как мне туда его ВПИСАТЬ, даже нулевое? У меня оно равно функции же, а она неактивна до запуска.

Ответы15157

22 июня, 11:50 185 1215108

>>1215096
Соре, анон, в /b наверное пересидели день не курил.
Зачем юзаешь C-style строки вместо std::string?
Ругатся много из-за чего может. Визуалка тебе обо всём говорить должна с номером строкивключи нумерацию строк и описанием ошибки.
Анон выше написал, что легче всего первый символ чекнуть, но здесь у тебя скорее всего, ебня с типами т.к. у разности указателей свой тип,std::ptrdiff_t а у тебя разность указателю присваивается.
Ну и с = в if тоже проебался.

Ответы15123

22 июня, 12:05 186 1215119

>>1215090
>А че есть инфа по ним?
А какя инфа то? Это крупная галера. Сотни тпшек рассылают список вакансий всем подряд (в описании вакансий часто можно наблюдать ошибки в грамматике и правописании).

Ответы15510

22 июня, 12:09 187 1215123

>>1215108
Так выше я писал. Так будет работать?

{
String str;
cout<<"Введите номер вашей карты";
cin>>str;
if(str[0]=='2'){
*
}

Ответы15137

16 Кб, 606x294
22 июня, 12:23 188 1215137

>>1215123

Ответы15157

17 Кб, 632x264
22 июня, 12:37 189 1215157

>>1215102
>Я же правильно понял, что ccwrk подчёркивается из-за пустого значения? Если так, то как мне туда его ВПИСАТЬ, даже нулевое?
Для начала, твой код падает ещё на
char *ccwrk = strchr(ccnum, 4);
Зачем тебе эта строка? Давай прочитаем определение strchr
>Функция strchr выполняет поиск первого вхождения символа symbol в строку string. Возвращает указатель на первое вхождение символа в строке. Завершающий нулевой символ считается частью Си-строки. Таким образом, он также может быть найден для получения указателя на конец строки.
Значит она тебе вернёт любое первое вхождение четвёрки. Даже в случае ххх4 хххх хххх хххх или в случае хххх хххх хххх 4ххх
Значит она тебе не нужна.
Что ты пытаешься сделать в случае symbcc - вообще не понятно.

Тебе нужно лишь читать первый символ строки. Первый символ просто получить использовав указатель на строку.

Поэтому см >>1215137

Если хочешь c std::string, то пикрилейтед.

Ответы15297

22 июня, 16:04 190 1215297

>>1215157
Ну ты мог сделать str[0].
Зачем ты его итераторами пугаешь.

Ответы15322

22 июня, 17:09 191 1215322

>>1215297
Строка может быть пустой, так что вы оба неправы.

Ответы15325

22 июня, 17:11 192 1215325

>>1215322
Если строка будет пустой, то ∗data.begin() вернёт '\0' разве нет?

Ответы1533315334

22 июня, 17:30 193 1215333

>>1215325
Это c-style строка заканчивается '\0'. К строкам из std это не относится. В итоге для пустой строки будет выкинут эксепшн.

Ответы15335

22 июня, 17:32 194 1215334

>>1215325
Добро пожаловать в чудесный мир строк c++.

Ответы15335

43 Кб, 794x802
22 июня, 17:35 195 1215335

>>1215334
>>1215333
Ну хз.

Ответы15342

22 июня, 17:56 196 1215342

>>1215335
Если ты под студией сидишь, то собери в дебаге и запусти - вылетит ассерт. Наличие этого символа стандартом не оговаривается и зависит от реализации библиотеки std конкретным вендором.
Ну и вдогонку:
https://stackoverflow.com/questions/11752705/does-stdstring-contain-null-terminator

Ответы1534315358

22 июня, 18:00 197 1215343

>>1215342
> In C++11 and later, mystring.c_str() is equivalent to mystring.data() is equivalent to &mystring[0], and mystring[mystring.size()] is guaranteed to be '\0'.
Так что всё там есть.

22 июня, 18:22 198 1215358

>>1215342
Да, в дебаге пидорасит. Не заметил что у меня релиз стоит.

Ответы15383

22 июня, 18:23 199 1215359

>>1214746
Бамп вопросу на всякий случай

Ответы15368

22 июня, 18:36 200 1215368

>>1215359
Если грубо, то умножь время, которое ты потратил на еблю с питоном, на четыре.

Ответы15462

22 июня, 18:49 201 1215383

>>1215358
Чёт не могу найти явного/косвенного указания на null-terminated в стандарте. Но раз уж господа пишут, что с C++11 можно разыменовывать str[str.size()], то будем считать что '\0' всё-таки там есть.

Ответы15903

22 июня, 18:50 202 1215385

Сходил на собес.
Пиздец конечно они конченые.
Я добираясь до них по адской жаре пришел к ним, а они пидоры даже воды не предложили, я уже не говорю о чае или кофе.
Начали спрашивать по С++ всякую хуйню по СТЛ, когда у меня там было написано что я больше на Си пишу и С++ только по минимуму юзаю.
Еще у них под винду оказалось, хотя у меня четко написано в резюме только линукс.

Ну как такими долбоебами можно быть?

Ответы1539715465

22 июня, 19:20 203 1215397

>>1215385
>Я добираясь до них по адской жаре пришел к ним, а они пидоры даже воды не предложили, я уже не говорю о чае или кофе.

Если из твоего резюме не следует, что ты спец в нужной сфере, то зачем на тебя тратить время, печеньки и кофе? Они таких десяток в неделю опрашивают. Видимо ты ещё со временм проебался, торопился и напотел в штаны.

>Начали спрашивать по С++ всякую хуйню по СТЛ, когда у меня там было написано что я больше на Си пишу и С++ только по минимуму юзаю. Еще у них под винду оказалось, хотя у меня четко написано в резюме только линукс.

Вакансию ты не читал и на сайт работодателя не заглядывал, да?

Ответы15401

22 июня, 19:27 204 1215401

>>1215397
Я разместил свое резюме на хх, написал четко скидывать вакансии на почту, но нет блять, они нихуя не скинули описание вакансии, а позвонили, рассказали какую-то ебаторию в двух словах, но не сказали что под винду и что там вообще с++ уровня Java, а не си с классами как я хотел.
В общем они уболтали меня на собес, я согласился, но попросил выслать мне описание вакансии на почту, что они конечно же нихуя не сделали, но я подумал лан похуй, сама их деятельность вроде интересная была, поэтому я не стал отменять встречу.

>Если из твоего резюме не следует, что ты спец в нужной сфере, то зачем на тебя тратить время, печеньки и кофе?
Во-первых, нахуя меня звать на собес, если я им не нужен?
Во-вторых, это блять чисто деловой этикет, предложить гостю в своей ебучей сраной говноконторе чашечку чаю или кофе с дороги.
Такое их отношение к своим собеседуемым лишь лишний раз говорит о том, что это ебучая галера, где им похуй на своих сотрудников.

Это кстати первый раз, где мне не предложили чай/кофе на собесе. Вопиющая наглость.

Ответы1540515414

22 июня, 19:31 205 1215405

>>1215401
Вообще я заметил некую корреляцию между уровнем С++ и ущербностью конторы. Чем больше С++ похож на Java, со всякими там интерфейсиками, чрезмерным кол-вом ООП, СТЛ, буста, QT и прочей ебатории, тем вероятнее, что это обычная галера, где ты будешь только и делать, что фиксить легаси говно. Кстати они мне говорили, что у них сильный упор на фикс багов, после чего я сразу понял, что это 100% галера, куда они ищут макаку.

Ответы15408

22 июня, 19:41 206 1215408

>>1215405
Просто ты спец узкого профиля. Архитектура и gui это сплошной java-style, без которого ты крупный проект в разумные сроки не запилишь.

Ответы15412

22 июня, 19:47 207 1215412

>>1215408
Так в том-то и дело.
Что у меня конкретно написано, чем я занимался на предыдущих работах и что я хочу делать.
А когда пришел к этим, они начали спрашивать типа "А вы ГУИ делали когда-нибудь?" Я ахуел с таких вопросов и говорю мне нахуй это гуи не всралось и я этим не собираюсь заниматься.
Короче пиздец, ну ладно, сходил хоть размялся.

22 июня, 19:47 208 1215414

>>1215401
>Это кстати первый раз, где мне не предложили чай/кофе на собесе. Вопиющая наглость.
А мне как-то предложили встретить у них пенсию (в госконторе, ага).
Чай/кофе и экскурсия по офису тоже случались, но уже после успешного собеса. Зато перед собесом иногда какую-нить тянку подсылали, которая со мной знакомилась/кокетничала в лифте или на ресепшене.

22 июня, 21:38 209 1215462

>>1215368
Pizdos

22 июня, 21:46 210 1215465

>>1215385
Тоже было такое, сходил на один собес по жаре, пол-часа искал их галеру, но воду предложили. В обще нахуй нахуй летом и зимой работу искать.

22 июня, 23:30 211 1215510

>>1215119
да ошибки то ладно. они реально хуярят вообще всем вообще все вакансии. у меня в резюме (закрытом хз когда) джава была не знаю, 6-7 лет назад но мне пачками шлют вакансии по джаве. т.е. оно вообще без мозгов.
ну и работа там потогоночная.

Ответы15558

23 июня, 01:24 212 1215558

>>1215510
Ну а что ещё ожидать от работорговцев? Я когда к ним собеседовался, то там 6 этапов было (тпшки -> прогеры -> пм -> какой-то хуй -> контрагенты -> финальные переговоры). Ещё тестовое. Вся эта ебала растянулась на 2 месяца и ни по проекту ни по зп "работодатель" ничего внятно сказать не мог.

23 июня, 10:43 213 1215643

Сука, когда в стандарт завезут поддержку рефлексии, заебало писать костыли.

Ответы156931571715912

12 Кб, 1008x75
23 июня, 12:46 214 1215693

>>1215643
В лучшем случае через пять лет. В худшем через восемь. Возможно вообще перенесут на C++26, как комитет любит делать.

Ответы15694

23 июня, 12:46 215 1215694

>>1215693
> перенесут на C++26
Т.е. на C++29.

23 июня, 13:12 216 1215717

>>1215643
Используй qt, люк!

62 Кб, 644x500
23 июня, 18:17 217 1215903

>>1215383
>Чёт не могу найти явного/косвенного указания на null-terminated в стандарте.
http://eel.is/c++draft/string.classes#basic.string-4: In all cases, [data(), data() + size()] is a valid range, data() + size() points at an object with value charT() (a “null terminator”), and size() <= capacity() is true.

Ответы15949

23 июня, 18:38 218 1215910

А вот, например, эти умные дяди под руководством Страуструпа делаю новый стандарт. Они делают тестовый компилятор что ли или как?

23 июня, 18:39 219 1215912

>>1215643
Рефлексия разве нормальна в компилируемых языках? Не доебываюсь, просто спрашиваю, реально интересно

Ответы15913

23 июня, 18:40 220 1215913

>>1215912
Планируют добавить compile-time рефлексию, а не runtime.

Ответы15914

23 июня, 18:42 221 1215914

>>1215913
А это случаем не #define?

Ответы1591515918

23 июня, 18:44 222 1215915

>>1215914
При чём тут #define?

23 июня, 18:47 223 1215918

>>1215914
#define это не compile-time, т.к. разруливается препроцессором еще до компиляции. С соответствующими особенностями – нихуя не знает о типах, копипастит код как текст.
И дефайн это не рефлексия

Ответы15921

23 июня, 18:50 224 1215921

>>1215918
Все равно не понимаю, они собираются JIT компиляцию что ли делать?

Ответы15924

23 июня, 18:53 225 1215924

>>1215921
Сompile-time же. Наверно будет что-то вроде шаблонов.
Хуй знает, мне от рефлексии надо только read-only фичи, типа итерирования по всем значениям enum.

Ответы1593016616

23 июня, 19:03 226 1215930

>>1215924
...и преобразование в строку, потому что сейчас это выглядит следующим охуительным образом:
https://pastebin.com/VB2TfXTv

Ответы1593316616

23 июня, 19:14 227 1215933

>>1215930
В чем смысл этого кода, если функция сломается, стоит кому-то поменять/дополнить енум.

Ответы15935

23 июня, 19:17 228 1215935

>>1215933
Т.к. в конце свича нет default, то при добавлении значения в енум конпелятор спалит, что его нет в свиче и покажет варнинг (при соответствующих флагах).
А при изменении\удалении значения код тупо не скомпилится.
???
PROFIT

18 Кб, 480x360
23 июня, 19:52 229 1215949

>>1215903
Ах ты мой маленький сыщик :3

24 июня, 19:46 230 1216616

>>1215924
>>1215930

Пердачую. От X Macros'ов крыша едет, это надо делать иначе.

24 июня, 20:30 231 1216643

Чем отличаются vector и list?

Ответы16659

9 Кб, 598x392
24 июня, 20:55 232 1216659

>>1216643
В вектор элементы набиваются плотно, жопа к жопе, в одном куске памяти. Поэтому занимает меньше места и можно получить доступ по индексу. Но вставка и удаление из середины медленная, т.к. надо сдвинуть все 100500 объектов после удаленного на один назад. А при заполнении всего участка памяти берется кредит в два раза больше предыдущего выделяется новый участок побольше, туда перемещаются все данные, а старый удаляется.

В листе у каждого элемента личный кусочек памяти, где лежит он сам и два указателя: на тот что за ним и перед ним, как в очереди к терапевту. Поэтому вставка в середину быстрая (хуле там – четыре указателя переставить). Зато при добавлении элемента приходится выделять этому мудаку отдельный кусок памяти, отчего стандартный аллокатор, не оптимизированный для маленьких объектов, срет кирпичами. И нет доступа по индексу – чтобы добраться до середины, спрашиваешь "кто крайний?", потом у него "вы за кем?" и так N раз.

пикрелатед
paint master

Ответы1668116683

24 июня, 21:20 233 1216681

81 Кб, 1765x15581,9 Мб, 1920x2623

>>1216659
also this

24 июня, 21:22 234 1216683

>>1216659
Хорошо объяснил, спасибо. Я так понимаю с вектором программа быстрее работает, если ты этот вектор не часто меняешь, а больше читаешь. Даже если ты не знаешь индекс элемента и прогоняешь вектор через цикл, то это будет быстрей чем в списке, так как прыгать по указателям медленее, чем читать в памяти +1 по очереди. Правильно?
А какой из этих способов используется для реализации массивов в Javascript и списков в Питоне, не в курсе?

Ответы1668616696

24 июня, 21:28 235 1216686

>>1216683
> массивов в Javascript
Зависит от виртуальной машины, но чаще всего делают именно как вектор. Конечно есть исключения, например

var a = [];
a[100500] = 1;

не будет создавать 100500 элементов.

24 июня, 21:40 236 1216696

>>1216683
Можно в принципе всегда использовать вектор, если данных не много (до 100мб, а может и больше). Фича в том, что внутри него обычный массив, как в си. С соответствующими бонусами: вектор может переместить себя прямо голыми руками через memmove(), передавать этот массив в сишные библиотеки, +из кэша процессора кровь не течет, т.к. все данные размещены последовательно.

Хз что там в ЖС и питуне, но вероятно тоже что-то вектороподобное. Ибо только джава так упарывается по интерфейсам, что предоставляет доступ по индексу к LinkedList.

задрот С++ в треде, спрашивайте ваши ответы

Ответы16751

24 июня, 22:50 237 1216751

>>1216696
> спрашивайте ваши ответы
Как запилить аналог винапишной функции WaitForMultipleObjects? Нужно знать, какой из запущенных тредов завершил работу.

Ответы168431684816861

25 июня, 00:19 238 1216843

>>1216751
WaitForMultipleObjects ждет все объекты, а не один.
Как запилить - очевидно, дождаться всех объектов.
мимо

Ответы16899

25 июня, 00:25 239 1216848

>>1216751
как-то быстро наш задрот слился

25 июня, 00:43 240 1216861

>>1216751
Насколько я знаю, нет способа узнать, завершен ли поток, если только он сам не сообщит об этом каким-либо образом. Поэтому можно раздать всем тредам общий condition_variable с мьютексом и дальше по примерам с cppreference.

https://www.quora.com/In-C++-multithreading-how-can-I-detect-which-thread-finishes-first

25 июня, 01:27 241 1216899

>>1216843
Посмотри документацию, придурок. https://msdn.microsoft.com/en-us/library/windows/desktop/ms687025(v=vs.85).aspx

>bWaitAll [in]
If this parameter is TRUE, the function returns when the state of all objects in the lpHandles array is signaled. If FALSE, the function returns when the state of any one of the objects is set to signaled. In the latter case, the return value indicates the object whose state caused the function to return.

25 июня, 09:35 242 1217029

13 Кб, 800x886 Кб, 278x145

Я вытащил экзешник из папки релиз на рабочий стол, он запустился без проблем, так как нет файлов, которые программа искала бы в папке проекта. Как быть с остальными инклюдами и что именно надо прицепить к экзешнику, чтоб он запустился на другом компе? В свой компилятор кидал ещё вот эти два файла (либ в папку либ, хидер в папку инклюд), длл-ку в Windows\SysWOW64.

Ответы1710017250

25 июня, 12:21 243 1217100

>>1217029
> Я вытащил экзешник из папки релиз на рабочий стол, он запустился без проблем, так как нет файлов, которые программа искала бы в папке проекта.
Потому что система их нашла в папке шиндовс куда ты их и забросил.

> Как быть с остальными инклюдами и что именно надо прицепить к экзешнику, чтоб он запустился на другом компе?
Вместе с экзешником должны быть и дллки.

Ответы17219

25 июня, 17:18 244 1217219

>>1217100
Насколько я понял, программа ищет файлы в папке проекта, если в инклюдах они в кавычках

25 июня, 19:04 245 1217250

>>1217029
Просто хранишь dll вместе с экзешником и все. Никакие хедеры, .a и .lib файлы не нужны.

25 июня, 20:14 246 1217299

Сап, плюсаны! Подскажите где ошибся? Не считая того что происходит переполнение целочисленного типа( работой над большими числами я займусь позже).
Прога по вычислению теоремы Ферма.
https://ideone.com/C3tZ6t

Ответы17317

879 Кб, 500x269
библиотеки для ARM микроконтроллеров 25 июня, 20:20 247 1217304

Начинающий микроконтроллерщик, вопрос будет о существующих годных фреймворках. В основном работаю с STM32. Знаком со стандартными библиотеками HAL, а так же MBED C++ библой.

Какими библиотеками или фреймворками пользуются профессиональные программисты ARM микроконтроллеров? Интересуют конкретно C++.

25 июня, 20:33 248 1217317

>>1217299
Начнем с того, что решение ты не найдешь никогда, потому что теорема Ферма как раз о том, что для n>2 решений нет.

Ответы1733317420

25 июня, 20:43 249 1217333

>>1217317
...да еще и код написан в стиле lab1.cpp
Эквивалентных результатов можно добиться программой в пять раз короче.
https://ideone.com/AxGmby

Ответы17367

25 июня, 21:38 250 1217367

>>1217333
>https://ideone.com/AxGmby
Видел такую форму записи когда гуглил про решение этой теоремы, думал что может она неправильная.
for
for
for
вот теперь буду знать спс

25 июня, 22:57 251 1217420

>>1217317
Я не математик. Но зачем вообще такая теорема нужна? Ну вот сказал какой-то чувак, что для n>2 решений нет. И блять 300 лет не могли доказать. Какой вообще смысл этой теоремы?

Ответы1743417435

25 июня, 23:19 252 1217434

>>1217420
ну так, прост))

Может потом пригодится как частный случай какой-нибудь практической задачи. В математике часто так – придумывают совершенно пизданутые (но формально непротиворечивые) теории и модели, которые вообще непонятно нафиг нужны. А через 100 лет они внезапно оказываются полезны в какой-то области. Так на тензорное исчисление всем было поебать, пока оно не пригодилось для физики твердых тел.

25 июня, 23:20 253 1217435

>>1217420
>Какой вообще смысл этой теоремы?
Такой как и смысл тебя то есть никакого

26 июня, 00:53 254 1217512

>>1208905 (OP)
Вы try catch, throw exception спиздили из джавы!

Ответы17517

sage 26 июня, 01:25 255 1217517

>>1217512
Бля, мужики, это не с нашего жабазагона даун, не судите по нему.

26 июня, 01:38 256 1217519

Сап плюсач. Саморазвиваюсь короче. Появился вопрос и хочу его задать, в надежде получить ответ.
Пишу хуйню без особых знаний, руководствуясь неким факом, который автор оставил. ФАК этот для хук длл. Но фак уровня /b, чтоб ретарды как я не могли быстро все повторить. В общем кратко, предположим, я хукнул функцию. По её вызову, мы попадаем в хук, и там как пишется, надо вызвать другую функцию с указателем thisptr. По логике, вызвав функцию с этим указателем, она вернет некий результат. После чего, мы получая результат, должны перезаписать входящие данные в функцию, которую хукаем, и вернуть ей управление. Каким образом будет выглядеть вызов рандом функции с указателем thisptr, да чтоб она еще что то выполнила и вернула?

26 июня, 02:34 257 1217527

По Паттернам получается, что в C++ конструкция try catch и возможность множественного catch это цепочка ответственностей. Я правильно понял паттерн?

Ответы17541

26 июня, 07:25 258 1217541

>>1217527
с натяжкой да. Обычно под цепочкой ответственности подразумевается что-то типа "гуишный виджет получает событии о нажатии клавиши, обрабатывает его или передает родителю если не знает, что с ним делать, и так далее"

26 июня, 12:29 259 1217612

Сейчас пытаюсь разобраться в указателях (без них рекурсивную задачу выполнил), но с ними у меня какой-то затуп.
Мне нужно с помощью рекурсии вывести цифры числа по отдельности.
#include <iostream>

using namespace std;

void recursion (int p)
{
cout << p % 10;
if (p == 0)
return;
else
recursion (p / 10 ); (Здесь собственно ошибка)

}

int main()
{
int a;
cin >> a;
recursion (&a);
return 0;
}
Что нужно изменить, желательно с пояснением.
Спасибо за ответ!

26 июня, 12:29 259 1217612

Сейчас пытаюсь разобраться в указателях (без них рекурсивную задачу выполнил), но с ними у меня какой-то затуп.
Мне нужно с помощью рекурсии вывести цифры числа по отдельности.
#include <iostream>

using namespace std;

void recursion (int p)
{
cout << p % 10;
if (p == 0)
return;
else
recursion (p / 10 ); (Здесь собственно ошибка)

}

int main()
{
int a;
cin >> a;
recursion (&a);
return 0;
}
Что нужно изменить, желательно с пояснением.
Спасибо за ответ!

Показать весь текст
Ответы17613

26 июня, 12:30 260 1217613

>>1217612
Извиняюсь, там перед каждой переменной p стоит звездочка (*)

Ответы17618

26 июня, 12:36 261 1217618

>>1217613
закинь в ideone, а то лень угадывать, где у тебя там звёздочки пропали

Ответы17621

26 июня, 12:38 262 1217621

>>1217618
Как тебе удобно.
Держи https://ideone.com/Mzucu3 .

Ответы17628

26 июня, 12:57 263 1217628

>>1217621
()p это разыменование указателя, тип этой операции будет int == ()(int). тип выражения ()p / 10 тоже int, а твоя функция принимает recursive(int). Если ты попытаешься взять от него адрес &(()p / 10), то тоже получишь ошибку, так как результат деления это временный объект. Так что в данном случае нужно вынести деление отдельной строкой (*)p /= 10; recursion(p);

Ответы17629

26 июня, 13:04 264 1217629

>>1217628
(*)p /= 10; recursion(p);
Может бредовый вопрос. Но в данном случае recursion (p) будет являться ссылкой на целочисленную переменную или самой переменной.
p = 000xf230 или p = 12 (допустим).

Ответы17633

26 июня, 13:12 265 1217633

>>1217629
Аргумент функции recursion(p) это указатель (а указатель это переменная, которая хранит в себе адрес, то есть p == 000xf230).

Ответы17634

sage 26 июня, 13:14 266 1217634

>>1217633
Огромное спасибо!

492 Кб, 1280x963
26 июня, 13:43 267 1217648

Анонимусы, какая литература есть по Qt? Или мануалов должно хватить? Выдвигаюсь на галеру, где требуется, да и самому хотелось бы изучить.

Ответы176501766819738

26 июня, 13:47 268 1217650

>>1217648
Макс Шлее

26 июня, 14:52 269 1217668

>>1217648
Мануалов и стаковерфлоу достаточно.

sage 26 июня, 18:18 270 1217736

Ребят, я не знаю как такое вообще возможно. Может что-то с компилятором, но вот в общем какая ситуация.
Вот собственно сам код : https://ideone.com/1j6Ez5
Его задача проста, ввести кол-во элементов массива, забить массив и вывести наоборот. Он делает свою работу, но в нем есть две бесполезных строки.
std :: cout << *ptr_array-- << std :: endl;
std :: cout << &ptr_array << std :: endl;
Но стоит мне их убрать, то программа начинает работать не так как нужно. Почему подобное происходит?
Вот программа без этих строк:
https://ideone.com/9c7flr
Либо я реальный идиот и что-то упускаю, либо Бог знает что.
Спасибо за ответ.

Ответы17744

26 июня, 18:29 271 1217744

>>1217736
Лень вникать, но &arr[number] указывает за пределы массива (индексация то с 0 начинается, поэтому должно быть number - 1). А вот это (star)ptr_array-- как раз сдвигает указатель назад обратно в массив.

Ответы177481775117755

sage 26 июня, 18:32 272 1217748

>>1217744
Так я вроде как сделал это.
()ptr_array = ()ptr_number - 1;

Ответы17762

sage 26 июня, 18:35 273 1217751

>>1217744
Объективно, number = 3. Передалось это значение, по идее должно будет равняться 2 , и с индексами все будет нормально. Но видимо из-за указателей получается именно так.
Просто до этого я делал еще без функции, тоже на этом моменте затупил, забыл отнять. Но тут то это должно работать так, как надо.

sage 26 июня, 18:40 274 1217755

>>1217744
Это видимо из-за инкремента, он сначала выводит, а потом отнимает. Допустим максимум массива был равен 4. Он сначала из этой 4 вычитает 1, чтобы не выйти за переделы, потом отнимает еще раз 1 и получается 2. Но тогда как эта программа исправно работает, если изначально массив состоял из трех 4 элементов, а не из двух.
Видимо я что-то упускаю.

Ответы17757

sage 26 июня, 18:41 275 1217757

>>1217755
А не из трех*

26 июня, 18:57 276 1217762

>>1217748
эта строка не сдвигает указатель. она записывает длину массива минус один в позицию за массивом, то есть портит память.

Ответы1776517766

26 июня, 19:03 277 1217765

>>1217762
Чтобы всё заработало, тебе надо прибить эту строку и прописать number - 1. Кстати, есть ещё момент: объявление T[size] variable; требует, чтобы size был известен или вычислен во время компиляции. Конструкция типа int size = 10; int array[size]; не скомпилируется.

Ответы17769

sage 26 июня, 19:05 278 1217766

>>1217762
Спасибо большое, вроде как разобрался!
Изначально не понял, что он именно так работает.

sage 26 июня, 19:11 279 1217769

>>1217765
Вроде как понял, что изначально ptr_number (без n-1) был за пределами этого массива, потом в функции его можно засунуть внутрь через ptr_number-- или, как ты сказал number - 1.
Везде звездочки, если что.
А про t[size] видимо я не особо понял. Ты имел ввиду, что я после cin >> number и объявления int arr[number] получу ошибку компиляции? Но все, вроде как, исправно работает.

Ответы17786

26 июня, 19:36 280 1217786

>>1217769
>Но все, вроде как, исправно работает
Там видимо какая-то особенность компилятора gcc. Компилятор от микрософта такое не пропустит, так как он не знает, что пользователь запишет в number.

https://en.cppreference.com/w/cpp/language/array

noptr-declarator [ expr(optional) ] attr(optional)

expr- an integral constant expression (until C++14) | a converted constant expression of type std::size_t (since C++14), which evaluates to a value greater than zero
exp - целочисленное константное выражение (до с++ 14), преобразованное константное выражение типа std::size_t (начиная с с++14), которое вычисляется в значение больше нуля.

Ответы17793

sage 26 июня, 19:42 281 1217793

>>1217786
У меня просто Visual с ошибками постоянно ставился, не смог найти решение, хотя кучу репаков перекачал. Пришлось поставить codeblocks.
Тогда нужно создать массив допустим на 20000, а потом работать со своим размером? Сейчас посмотрел и увидел, что подобное на Паскале делал, где-то 3 месяца назад.

Ответы17795

26 июня, 19:46 282 1217795

>>1217793
можно использовать динамический массив
int(star) arr = new int[number]; // создание
delete[] arr; // удаление

Ответы17802

sage 26 июня, 19:49 283 1217802

>>1217795
Нужно будет смотреть.
Очень сильно помог разобраться, спасибо!

19 Кб, 480x325
26 июня, 20:03 284 1217811

Делал тестовое задание к собесу, кому может интересно.
Приветствую комменты и критику.

Условия:

Написать класс с интерфейсом:

struct IReceiver
{
virtual void Receive(const char data, unsigned int size) = 0;
};

На вход которого (через интерфейс IReceiver) блоками различного размера непрерывно поступает поток данных.

Сам поток представляет собой последовательность пакетов двух типов (пакеты идут вперемешку):

1. 0x24 (1 байт), размер последующих бинарных данных в пакете (4-байтовый), сами бинарные данные.

2. Текстовые данные, заканчивающиеся на «\r\n\r\n».

Как только обнаружен конец пакета, необходимо данные пакета передать потребителю через callback-интерфейс:

struct ICallback
{
virtual void BinaryPacket(const char data, unsigned int size) = 0;
virtual void TextPacket(const char* data, unsigned int size) = 0;
};

В обе функции за раз передаётся всё содержимое пакета целиком, без заголовков и «\r\n\r\n».

Надо иметь в виду, что данные на интерфейс IReceiver поступают произвольными блоками (нет никакой привязки к размерам и границам пакетов). Класс должен быть как можно эффективнее при следующих условиях: средний поток, подаваемый на вход – 500 Mbit/s, средняя длина блока входных данных – 1024 байт.

В решении важна простота и читаемость.

Решение:
https://pastebin.com/kv6MAPfg

19 Кб, 480x325
26 июня, 20:03 284 1217811

Делал тестовое задание к собесу, кому может интересно.
Приветствую комменты и критику.

Условия:

Написать класс с интерфейсом:

struct IReceiver
{
virtual void Receive(const char data, unsigned int size) = 0;
};

На вход которого (через интерфейс IReceiver) блоками различного размера непрерывно поступает поток данных.

Сам поток представляет собой последовательность пакетов двух типов (пакеты идут вперемешку):

1. 0x24 (1 байт), размер последующих бинарных данных в пакете (4-байтовый), сами бинарные данные.

2. Текстовые данные, заканчивающиеся на «\r\n\r\n».

Как только обнаружен конец пакета, необходимо данные пакета передать потребителю через callback-интерфейс:

struct ICallback
{
virtual void BinaryPacket(const char data, unsigned int size) = 0;
virtual void TextPacket(const char* data, unsigned int size) = 0;
};

В обе функции за раз передаётся всё содержимое пакета целиком, без заголовков и «\r\n\r\n».

Надо иметь в виду, что данные на интерфейс IReceiver поступают произвольными блоками (нет никакой привязки к размерам и границам пакетов). Класс должен быть как можно эффективнее при следующих условиях: средний поток, подаваемый на вход – 500 Mbit/s, средняя длина блока входных данных – 1024 байт.

В решении важна простота и читаемость.

Решение:
https://pastebin.com/kv6MAPfg

Показать весь текст
Ответы178301783718009183281927319901

26 июня, 20:26 285 1217830

>>1217811
/ Simulate partial network traffic by blocks of various size/
r = rand() % 15 + 1;
Вот эта строчка показывает, что ты не умеешь тестировать свою писанину.

Ответы178321784018009

26 июня, 20:27 286 1217832

>>1217830
Поясни

Ответы17844

26 июня, 20:31 287 1217837

>>1217811
/* Terminal state indicates data has been successfully handled
А вот эта, что с английским тоже не оче.

Ответы17840

26 июня, 20:37 288 1217840

>>1217830
>>1217837
Ясно, ты потролить пришел.

Ответы17850

26 июня, 20:39 289 1217844

>>1217832
Тест должен быть стабильным. Рандом делит это качество на ноль. Более того, ты не сможешь воспроизвести поток данных и найти баг, если тест не пройдёт.

Ответы1785518034

26 июня, 20:42 290 1217850

>>1217840
Ты хотел критику, я тебе её принёс.

Ответы17855

26 июня, 20:51 291 1217855

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

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

Вообще ненавижу тесты, если в работе надо писать юнит тесты я сразу ее шлю нахуй. Это для макак.

>>1217850
Так ты поясняй, а не только снисходительно пизди тип это не прально то не прально.
Коль решил доебаться - обосновывай.

Ответы17868

26 июня, 21:06 292 1217868

>>1217855
>Вообще ненавижу тесты, если в работе надо писать юнит тесты я сразу ее шлю нахуй. Это для макак.
>
То есть для отладки ты написал один код, а для демонстрации другой (с недвусмысленным методом make_test_stream)? Или ты не отлаживал вообще?

Сложные алгоритмы без тестов не написать и уж тем более не оптимизировать. Гарем из наташек-тестировщиц не поможет.

Ну с бомбёжкой по поводу замечаний тебе тоже желательно совладать.

Ответы17877

26 июня, 21:13 293 1217877

>>1217868
Бля ты вообще видел реальные тесты когда-нибудь? Тот мой код похож на реальные тесты?

>Сложные алгоритмы без тестов не написать и уж тем более не оптимизировать.
Я говорил про юнит тесты. Тесты на алгоритмы и производительность это совсем другое.

>Ну с бомбёжкой по поводу замечаний тебе тоже желательно совладать.
Где ты бомбежку увидел? Ты нормально общаться научись сначала, не снисходительно и аргументированно.

Ответы17878

26 июня, 21:15 294 1217878

>>1217877
>Я говорил про юнит тесты. Тесты на алгоритмы и производительность это совсем другое.
Алгоритм заворачивается в класс, который, в свою очередь, является юнитом.

Ответы17887

26 июня, 21:20 295 1217887

>>1217878
Я про другое говорил и ты понял о чем я.

Ответы17895

26 июня, 21:25 296 1217895

>>1217887
То есть, если тебе придётся писать алгоритм, то ты превратишься в макаку и будешь писать юнит-тесты? Или ты будешь писать тесты прям в классе алгоритма?

Ответы17900

26 июня, 21:31 297 1217900

>>1217895
Уже через чур толстить начинаешь.
Тесты к своему алгоритму-то я напишу, если надобность будет и то выборочные.
Я имею ввиду, я не пишу тесты на каждый пук, как это делают некоторые дауны, тратя 80% времени разработки на ебаные тесты.

Ответы179211792918009

26 июня, 21:56 298 1217921

>>1217900
>Тесты к своему алгоритму-то я напишу
Ты их и написал в задании. Но с rand там явный залёт.
Помнится я как-то писал тестовое на senior'a и как раз тестовую часть сделал на отъебись. По ней меня и выебли, сволочи :). Так что либо аккуратно оформляй это говно, либо выкидывай нахуй.

Ответы17971

26 июня, 22:13 299 1217929

>>1217900
А ещё у тебя нет проверок на nullptr для data. Толсто это или нет, но валится на отлично.

Ответы17961

26 июня, 22:57 300 1217961

>>1217929
Ну там предполагается, что в Receive пустая data или с нулевым сайзом не может быть.

Ответы17981

26 июня, 23:11 301 1217971

>>1217921
Ну с ранд может и да, хотя я не рассматриваю это как тест, скорее как демонстрация.

Я конечно мог бы получше стараться, но меня просто не особо парит, что они ответят, т.к. я буду дальше искать более подходящую для себя работу. Под конец уже хотелось побыстрее доделать эту задачу и перейти на что-нибудь другое.
А так да, я им заломил ЗП 180к ( хотя по мне норм зп для мидла, даже маловато, хотел сначала 200к попросить ) и они такие типа ебать ты заломил ЗП, мы тебя будем оценивать как сеньора. Я думаю мне пох ваще как вы там будете меня оценивать, лол.

26 июня, 23:20 302 1217981

>>1217961
Это точка стыковки с суровым внешним миром и я бы туда всё-таки добавил:
if (!data || !size) return;
В остальном вроде всё чисто.

Ответы18017

27 июня, 00:02 303 1218009

>>1217811
Ключевое слово explicit избыточно с конструктором, принимающим два аргумента
А так хуй знает, лень вникать. Чем занимается галера?

>>1217830
Главная проблема этой строки это неравномерное распределение.

>>1217900
Ну с процентами ты перегнул, но относительно большую часть да. А хули делать, энтерпрайз ептыть. Повезет если за тебя кто-то будет их писать

Ответы18017

27 июня, 00:22 304 1218017

>>1217981
Да уже пох. Я уже все равно отослал до того, как сюда запостил.

>>1218009
>Ключевое слово explicit избыточно с конструктором
Да, я знаю. Я потом добавил второй аргумент и забыл убрать эксплицит.

>Чем занимается галера?
Какая-то хуйня по видеонаблюдению.
Я тут писал про нее уже пару постов назад.
Главная причина почему я туда очень вряд ли пойду - это то, что они под виндой пишут, а я только под линукс всегда разрабатывал и винда мне вообще как-то противна в плане разработки. Стоит только взглянуть на WinAPI и уже блевать хочется.
К тому же там под студией надо сидеть и всеми этими виндовыми штуками пользоваться, я в них ничего не понимаю и разбираться лень. Да и нахуй мне такой опыт, когда пол жизни под линукс пишу.

Ответы21471

27 июня, 00:53 305 1218034

>>1217844
Так как seed для рандома постоянен нет чего-то в духе srand(time(0)), то rand() будет каждый раз генерить одинаковую выборку. Так что можно сказать тестовые данные константны.
Мимо другой анон. Зацепило тестовое, решил сам сделать. Вот что вышло https://ideone.com/HNjdzP

Ответы180381805120036

27 июня, 01:10 306 1218038

>>1218034
>CamelCase
>lowerCamelCase
>Hungarian notation
>10 уровней вложенности.
>Java-style
>Куча magic numbers
Я даже не проверял работает ли это и правильно ли сделано, но это просто невозможно читать.
Я бы тебя забраковал только за ужасный код стайл.

Ответы1804518058

27 июня, 01:21 307 1218045

>>1218038
>>10 уровней вложенности.
Лол, ну ведь 3 максимум и то в одном месте где свич.

>Java-style
В чем проявляется?

С остальными пунктами более-менее согласен.

>это просто невозможно читать
А мне нормас))

Ответы18056

27 июня, 01:30 308 1218051

>>1218034
Там в конце надо бы вместо new:
unique_ptr<CallbackImpl> callback = make_unique<CallbackImpl>(cout);

27 июня, 01:42 309 1218056

>>1218045
Вообще я придерживаюсь linux kernel code style, т.к. еще много пишу на Си. Но на С++ это тоже отображается.
Вот почитать тут можно.
https://github.com/torvalds/linux/blob/master/Documentation/process/coding-style.rst

Плюс еще кое что из гугл код стайла, но не все.
http://google.github.io/styleguide/cppguide

Именую все в under_scope, ибо camelCase это все из джавы, паскаля и прочего.

>Лол, ну ведь 3 максимум и то в одном месте где свич.
С отступом в 8 символов 3 уровня это уже через чур.
Цитирую Торвальдса:
>if you need more than 3 levels of indentation, you're screwed anyway, and should fix your program.

Ответы20053

27 июня, 01:46 310 1218058

>>1218038
>это просто невозможно читать
Обычный энтерпрайз а может каркас или интерфейсная часть. Все так пишут, так что привыкай.

Ответы18061

27 июня, 01:54 311 1218061

>>1218058
Ну на каких-нибудь убогих галерах может так и пишут, хз я никогда там не бывал. Но если ты уважающий себя прогер и твоя команда не сброд макак и индусов, то вы будете придерживаться какого-то лаконичного и ясного код стайла, чтоб другие могли прочитать без особого труда, что ты там наговнокодил, точнее напрогал, ибо говнокод запрещается тоже.

Кстати, когда хожу по собесам, всегда спрашиваю про код стайл, помогает сразу отсеять галеры с быдлокодерами.

Ответы1813618143

27 июня, 08:13 312 1218106

Снова вопрос.
Вот, допустим, есть массив n из i элементов. Я могу ввести с клавиатуры число x, а потом присвоить x элементу массива n какое-то число.
Типа :
сin >> x;
n[x] = 1;
Но как такое сделать в функции? Спасибо за ответ!

sage 27 июня, 10:08 313 1218136

>>1218061
За версту чую человека, нигде не работавшего.

Ответы18143

27 июня, 10:21 314 1218143

>>1218136
>>1218061
>хожу по собесам
>За версту чую человека, нигде не работавшего.
Хуя ты шерлок.

Ответы1814920053

27 июня, 10:30 315 1218149

>>1218143
ходить != работать

27 июня, 14:17 316 1218277

Антоны, зачем надо объявлять отдельно заголовочный файл класса с названиями функций, а затем и .срр с реализацией? Нельзя что ли просто в заголовочном делать реализацию?

Ответы1828618374

27 июня, 14:29 317 1218286

>>1218277
Можно, просто во-первых это стиль такой, во вторых чтобы не было перекомпиляции, если ты заменишь что-то в cpp файле будет перекомпилироваться только он, а если в хэдере, то будут перекомпилироваться все файлы, в которых этот хэдер включен.

Ответы1834418354

27 июня, 15:55 318 1218328

>>1217811
Что нужно читать, чтобы эту байду уметь?
Я прочел Страуструпа Язык C++, но это задание сделать не могу и решение не понимаю.
Это вообще сложное задание?

Ответы18352

27 июня, 16:13 319 1218344

>>1218286
>Можно
Только для инлайн функций, шаблонных функций и (С++17) инициализации переменных.
Для обычных функций/методов тоже работает, но если включишь один хедер в разные срр, то линкер найдет несколько определений (даже и одинаковых) и обложит тебя хуями.

Ответы18385

27 июня, 16:26 320 1218352

>>1218328
Что бы научиться программировать надо не только читать но и писать. Хуяч код каждый день и байтоебь, через полгода научишься писать как этот тип

Ответы1835818644

27 июня, 16:28 321 1218354

>>1218286
>Можно
Ты охуел что ли, пёс? А как же дабл дефинишн?

Ответы1835918385

27 июня, 16:32 322 1218358

>>1218352
Я могу эту задачу решить, но только без этих абстракций, только в структурном стиле. Я не понимаю, зачем использовать ООП в подобных задачах, он же ниуместин.

27 июня, 16:33 323 1218359

>>1218354
А если целиком .сpp класс подогнать в #ifndef?

27 июня, 16:59 324 1218374

>>1218277
h-файлы дикий костыль языка Си, где ты сам делаешь работу компилятора, объявляя функции для использования. В C++ этот костыль перекочевал, впитав в себя ещё и особенности использования с шаблонами (а шаблоны в большинстве случаев ты можешь объявлять только в h-файлах, если не считать 3.5 костыля, которыми никто не пользуется).

Для решения этих проблем были придуманы модули, которые избавляют от необходимости h-файлов. Однако модули не взлетели в C++20 (потому что в самый последний момент кому-то что-то не понравилось) и скорее всего будут только к C++23 или C++26 (а возможно и ещё позже).

Ответы183791838118388

27 июня, 17:04 325 1218379

>>1218374
Давайте отпиздим Страуструпа за это.

27 июня, 17:05 326 1218381

>>1218374
>где ты сам делаешь работу компилятора, объявляя функции для использования
В каком смысле? Роль линкера что ли?

Ответы18382

27 июня, 17:08 327 1218382

>>1218381
Нет. В современных языках ты прямо внутри исходника каким-нибудь ключевым словом объявляешь какие классы/функции должны бить видимы за пределами файла, а какие нет.

В C/C++ для этого используются отдельные h-файлы. Т.е. если объявление класса/функции есть в h-файле, то они считаются доступными за пределами файла с реализацией, иначе - нет.

Ответы1838618388

27 июня, 17:11 328 1218385

>>1218344
>>1218354
Ну это очевидные ограничения, что вы напали сразу.
Если он делает laba1.cpp, то ему это не помешает.

27 июня, 17:12 329 1218386

>>1218382
Ну и помимо видимости в пределах файла, есть ещё видимость в пределах "модуля". Опять таки в современных языках можно несколько файлов объявлять частью одного модуля и настраивать видимость функций/классов в пределах этого модуля. В C/C++ подобного механизма нет и обычно просто делают отдельную папку private или подобную и складируют туда h-файлы, содержимое которых пользователь API не должен подключать.

27 июня, 17:15 330 1218388

>>1218374
>>1218382
Боже, что несет этот полоумный?

Заголовочные файлы нужны для удобной читаемости кода.

Ответы1844318517

27 июня, 19:18 331 1218443

>>1218388
Чот я сравниваю хедеры стандартной библиотеки с сорсами какой нибудь жабы и сравнение по удобству читаемости не в пользу плюсов.

Ответы1844618515

27 июня, 19:31 332 1218446

>>1218443
Я сравниваю хуй с пальцем. Палец конечно хорошо, но хуи я люблю больше...

Ответы18471

27 июня, 20:20 333 1218471

>>1218446
Ты разделом ошибся.

27 июня, 21:32 334 1218515

>>1218443
На какой хуй может понадобиться оценивать хэдэры стандартной библиотеки с точки зрения читаемости?

Ответы18624

27 июня, 21:38 335 1218517

>>1218388
обосрался со студентика

Ответы18520

27 июня, 21:40 336 1218520

>>1218517
Я вообще-то сеньор, ну да ладно, послушаем, что нам джун скажет.

Ответы18563

27 июня, 22:27 337 1218563

>>1218520
Сеньор студентик? Пятикурсник?

Ответы18567

27 июня, 22:30 338 1218567

>>1218563
Сеньор-помидор.

Ответы18576

27 июня, 22:49 339 1218576

>>1218567
Сеньоры в нонейм бомжеконторах не котируются

28 июня, 00:36 340 1218624

>>1218515
Потому что хедер - это документация.

Ответы1863218787

28 июня, 01:17 341 1218632

>>1218624
какая блядь еще документация, даунич. Хедер - это необходимость для межмодульной видимости

Ответы1871718791

28 июня, 02:09 342 1218641

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

28 июня, 02:28 343 1218644

>>1218352
Я не пойму незнакомых явлений, если буду ебашить знакомые хеллоуворлды.
Где узнать про это всё байтоебство, хотя бы на уровне разъяснения базовых понятий, что к чему?

Ответы18652

28 июня, 03:44 344 1218652

>>1218644
Книг дохуя. В шапке в том числе

Ответы18862

28 июня, 09:49 345 1218717

>>1218632
Это интерфейс и документация. Я не знаю, чего ты с этого факта горишь.

Ответы18720

28 июня, 09:52 346 1218720

>>1218717
Шизик даже значение слова "факт" не знает

28 июня, 12:23 347 1218780

bits/stdc++.h>
Где взять? На ubuntu 18.04 есть, а как установить на 16.04 ?
Есть чё почитать на русском?

28 июня, 12:41 348 1218787

>>1218624
Ну конкретно поведение стандартной библиотеки исчерпывающе описано стандартом. Что ты хочешь увидеть в хедере своей реализации?

28 июня, 12:45 349 1218791

>>1218632
Я несколько раз перечитал твой пост, убедился что ты говоришь от балды и вздохнул спокойно. Потому что если бы связывание кода упиралось бы в наличие / отсутствие хедеров, это был бы пиздец.

_
Имхо присутствие в С-языках хэдэров это случай протекающей абстракции, когда мы не можем динамически определить сигнатуру функции и требуемые символы (и соответственно не можем что-то вызвать из библиотеки без точного знания вышеупомянутых), и ебет это только сишников и плюсоводов, потому что динамическое определение вышеупомянутой херни в язык еще не завезли.

Ответы18871

28 июня, 15:18 350 1218862

>>1218652
Начал читать Джеймса Коплиена Программирование на C++ 2005
там что-то будет об этом?

Шапка просто шикарная. Я такой дурак, что сразу по ссылке не сходил еще при первом посещении треда. Почему бы не выделять ее, чтобы нубы не пропускали?

Ответы18871

28 июня, 15:29 351 1218871

>>1218862
Ты еще что-нибудь года 86ого почитай. Язык после 11 года сильно изменился, большую часть книг можно выбрасывать на помойку, включая твою

>>1218791
Ты тролль, скорее всего. Не верю, что можно быть таким тупым.

Ответы19000

28 июня, 16:22 352 1218906

Сап, анон. Нужно написать маленький переводчик, с помощью префиксного дерева, но я не знаю как это дерево написать. Есть советы новичку?

s AHCHOUS 28 июня, 16:38 353 1218916

663 Кб, 1920x1080283 Кб, 1920x1080

Сап парни, решил вкатиться в программирование. Вкатываюсь в С++, но дело не в этом. Смотри пик 1 и пик 2. Где я накосячил, не могу разобраться.

Ответы189171894019018

28 июня, 16:41 354 1218917

>>1218916
У тебя опечатка в слове "меньше"

Ответы18919

AHCHOUS 28 июня, 16:42 355 1218919

>>1218917
не в этом дело

Ответы18923

28 июня, 16:45 356 1218923

>>1218919
А так визуально других ошибок нет, проверь на ideone, кинь ссылку если не сработает.

Ответы18925

AHCHOUS 28 июня, 16:49 357 1218925

>>1218923
там получилось, а почему в Div не работает-то?

Ответы18929

AHCHOUS 28 июня, 16:53 358 1218929

>>1218925
в DEV, прошу прощения

Ответы18930

28 июня, 16:59 359 1218930

>>1218929
Кривая IDE наверн

Ответы18932

AHCHOUS 28 июня, 17:00 360 1218932

>>1218930
копирую такую же програму, там все работает< а у мня нету

60 Кб, 672x866
28 июня, 17:15 361 1218939

Помогите решить задачку, помогу рублем.
Нужно дополнить класс методом pop так, чтобы программа корректно вывела на экран информацию об объектах хранимых в стеке.

Ответы18943

28 июня, 17:16 362 1218940

>>1218916
Шаг номер 0. Удалить нахуй всякую хуйню, типа Dev-C++
Шаг номер 1. Поставить Visual Studio 2017
Потом возвращайся.

Ответы19197

28 июня, 17:19 363 1218943

>>1218939
Почему деревья вызывают такое недоумение у студентов? Или это преподы такие бездарные?

Ответы1894519733

28 июня, 17:21 364 1218945

>>1218943
преподы выдают отрывки кода и никак не учат от слова совсем.

Ответы18950

28 июня, 17:23 365 1218950

>>1218945
Давай лучше попробуем научиться? Это бесплатно к тому же.
Что, как тебе кажется, должно быть в методе pop()?

Ответы18954

28 июня, 17:26 366 1218954

>>1218950
Я бы с удовольствием научился, но до окончания принятия задачи осталось 30 минут. А все что я знаю о стеке, это то что поп удаляет верхний обьект

Ответы1896018963

28 июня, 17:36 367 1218960

>>1218954
T∗ pop() {
auto head = header;
if(head == nullptr) {
return nullptr;
}
header = head->tail;
auto data = new T(std::move(head->data)); // перемещаем данные
// auto data = new T(head->data); // как вариант - копируем данные
delete head;
return data;
}

Ответы189631896918979

5 Кб, 420x209
28 июня, 17:39 368 1218963

>>1218954
Но я не программист. Наверное >>1218960 лучше. Если мой код вообще работает

Ответы18966

28 июня, 17:42 369 1218966

>>1218963
Проблема в том, что node хранит данные по значению, а возвращать надо указатель. Значит эти данные нужно перемещать/копировать в новый кусок памяти, а саму node удалять. Иначе будет use after free (если ноду удалишь) или утечка памяти.

28 июня, 17:47 370 1218969

>>1218960
Сделал также
T pop() {
if (header) {
T info = *header->data;
auto k = header;
header = header->tail;
delete k;
k = nullptr;
return info;
}
else {
return T();
}
}

Ответы1897318974

28 июня, 17:51 371 1218973

>>1218969
Что это за хрень?
T info = ∗header->data;
тут звёздочка не нужна. А ещё лучше сделай
T info = std::forward<T>(header->data);

28 июня, 17:52 372 1218974

>>1218969
И да, твой вариант не подходит. Возвращаться должен указатель. Взгляни на использование pop в методе main.

28 июня, 17:56 373 1218979

>>1218960
А что авто делает?

Ответы18983

28 июня, 17:58 374 1218983

>>1218979
Это просто чтобы не писать тип. Вместо авто компилятор подставляет нужный тип сам.

Ответы18998

31 Кб, 638x479
28 июня, 18:13 375 1218998

>>1218983

28 июня, 18:16 376 1219000

>>1218871
Хорошо, Коплиен устарел.
Что тогда читать?
Напомню, вопрос начался с того, что мне непонятно байтоебство и хочу найти по нему материал для знакомых с основами языка. Что ты посоветуешь?

Ответы19052

28 июня, 18:34 377 1219018

>>1218916
Чем конкретно tdm-gcc отличается от mingw? Вопрос ко всем, кто работал с тем и другим

Ответы19026

28 июня, 18:44 378 1219026

>>1219018
У меня в MinGW32 с Code::Blocks не работали pretty-printers в gdb, потому что питон туда не завезли и видимо уже не завезут. Подсунул в CB tdm вместо mingw – всё ок, но стало пиздец медленно линковаться.
В остальном разницы не заметил.

28 июня, 19:30 379 1219052

>>1219000
Конкретизируй, что такое байтоебство в твоем контексте? Современный С++ очень далек от каноничного сишного байтоебства.

Ответы1906919273

28 июня, 19:56 380 1219069

>>1219052
ИНИЦИАЛИЗИРУЕШЬ МЕМСЕТОМ ОБЪЕКТ КЛАССА
@
С ВИРТУАЛЬНЫМ ДЕСТРУКТОРОМ

Ответы1907219507

28 июня, 20:02 381 1219072

>>1219069
Орул чет.
На самом деле страшно даже не то, что там виртуальный деструктор, а то, что внутри могут быть сложно инициализируемые объекты.

28 июня, 22:48 382 1219197

>>1218940
Омерзительно хуевый совет для laba1.cpp накатывать студию.

Ответы19211

28 июня, 23:07 383 1219211

>>1219197
Да, потому-что вместо нормального дебаггера консольное говно - самое то

Ответы19239

29 июня, 00:00 384 1219239

>>1219211
Не понял?

29 июня, 00:12 385 1219244

Сап плюсач. Разбираюсь с указателем this. Если кртако, то если у меня есть класс Car(), то я могу обратиться к его члену например this->Engine()?

Дальше. Как можно перезаписать параметр функции изнутри самой функции? Ну предположим у нас есть указатель на структуру векторов. Есть функция, принимающая параметром этот указатель. Внутри этой функции мы вызвали другую функцию, которая возвращает другую структуру векторов. Как мне сделать так, чтоб передать этот параметр? Просто сохранить указатель на новую структуру и вызвать первую функцию с новым указателем прямо внутри этой самой функции??

Ответы192491926019274

29 июня, 00:15 386 1219249

>>1219244
>Просто сохранить указатель на новую структуру и вызвать первую функцию с новым указателем прямо внутри этой самой функции??
Хуйня же выходит чет. Хуй знает как делать. Хелп ми.

29 июня, 00:47 387 1219260

>>1219244
Просто, блять, выложи код куда-нибудь только не сюда.

Ответы19262

29 июня, 00:54 388 1219262

>>1219260
Да все оказалось до банального просто. Функция оказалась принимает параметр, и передает реторном в другую функцию. Я ебался в глаза и не хотел видеть этот реторн. По сути я просто должен переписать это значение результатом другой функции и в реторн пихнуть новое значение.

29 июня, 02:14 389 1219273

>>1219052
Конкретизирую. Чуть выше кто-то привел пример задачи на собеседование и ссылку на свое решение. Вот: >>1217811

Мне стало интересно, что это за мудреные штуковины. Я их не понимаю, хотя в общих чертах с языком C++ знаком. Тут отвечают, что это байтоебство и советуют мне «RTFM».
Я всецело соглашусь, только вот какой конеретно талмуд читать? У Страуструпа такого не было, начал читать Коплиена, говорят, устарело.

Теперь выходит, тут еще замешана старая сишная работа с памятью. Зачем она мне? Разве в C++11/14/17 нельзя это всё сделать как-то почеловечнее, более высокоуровнево что-ли. Могу пойти Кернигана-Ритчи перечитывать, да вот нужно ли теперь?

Я не знаю, где изучаются такие штуки. Прошу совета, что почитать/посмотреть, чтобы было понятно, как он решил эту тестовую задачу, в чем там проблемы и как можно сделать лучше. Такой вот вопрос.

Ответы19504

29 июня, 02:25 390 1219274

>>1219244
this неявно разыменовывается внутри функций класса, так что тебе не нужно вызывать из одного метода другой через this.
Можно, конечно, использовать во избежание путаницы с аргументами, если совпадают имена. Но стоит изначально разумно называть данные и аргументы — и никакой путаницы не возникнет.

class Car
{
public:
void start()
{
this->fuel_inject(); // излишне
fuel_inject(); // нормально
}

bool rename(string name)
{
if(this->name != name) // достаточно было бы назвать аргумент new_name
return this->name = name; // и запутываться было бы уже негде
return false;
}
protected:
void fuel_inject();
private:
string name;
};

Про остальную часть вопроса по словесным описаниям понять трудно. Давай код. Кроме того, что тебе уже ответили, подозреваю, там может быть замешан std::forward или двойной указатель или еще что-то.

Ответы19374

29 июня, 10:01 391 1219374

>>1219274
Добра, разобрался. Про вторую часть забей, все оказалось проще.

29 июня, 13:36 392 1219504

>>1219273
двачую, я проебал линк на его писанину, если этот крестовый господин еще присуствует, пусть продублирует ссылку плиз
и да, если кто-то ответит, в каких книгах пишут про такое байтоебство, был бы благодарен

Ответы19505

29 июня, 13:41 393 1219505

>>1219504
Он же писал, что его основной язык C. Поэтому и пишет он в c-style с классами. Если хочешь так же, то иди в тред по C и спрашивай книги и задания там.

Ответы19969

29 июня, 13:42 394 1219507

>>1219069
Так и пишу сейчас.

29 июня, 19:00 395 1219723

>>1210614
Анус.

29 июня, 19:03 396 1219728

>>1215079
Учи петно. С++ это язык для крутых пацанов и тянок. А ты здесь вообще на C пишешь, меня расстраиваешь.

Ответы19776

29 июня, 19:06 397 1219733

>>1218943
Ну тут как бы вообще проблема со реализацией стека. Думаю, большая ошибка, что учат писать на плюсах. Смотришь, а там на самом деле на Сишные хедеры и строку. Ну йобана скороче уже c++20

29 июня, 19:10 398 1219738

>>1217648
Всё говно. Читать нечего. Разберись с тулингом и читай код. Рефы заебись.

4 Кб, 343x63
29 июня, 20:01 399 1219773

Сап двощ. Спустя два года снова снова ебусь с реверсом и попыткой написать на внутренней апи хук с подключением ингейм автоаима. Снова нихуя не пони и хочу спросить.

Есть
bool __thiscall CEGun::ComputeTgtLeadPosition(CEGun this, struct Vector )
Есть
enum FireResult __thiscall __high CEGun::Fire(const struct Vector )

В общем суть задачи такова, что хук вешается на CEGun::Fire, где внутри неким хуем вызывается CEGun::ComputeTgtLeadPosition абсолютно не представляю как вызвать, говорилось что то про this. Но она булевая, и возвращает 0 или 1. Хотя говорилось, что она делает перерасчет вектора, который надо будет передать реторном из CEGun::Fire. На скрине как раз функция, которая хукается и в которой надо вызвать CEGun::ComputeTgtLeadPosition .

В общем, как надо вызвать, чтоб получить этот вектор, и передать его дальше?

Ответы19825

29 июня, 20:20 400 1219776

>>1219728
Но ведь Си все ещё используется, т.к. есть места где только Си и тащитне считая асм
мимо-разработчик-дров

Ответы1977719801

29 июня, 20:24 401 1219777

>>1219776
Так из стандарта c-style никто не убирал. В с++20/30/40/50 он тоже останется. Просто есть болезные, которым невдомёк, что им дали не новый стандарт, а добавили функцмонала в старый. И нет никакого old/modern c++ а есть разные стили написания одного и того же говна.

Ответы19801

29 июня, 20:30 402 1219783

Я немножко в ахуе. Это комплиятор надо мной издевается, что ли?

uint32 count = vector.size() // 4, printf выдаёт нужный размер
for (int i=0; i<count; i++) {
myStruct.arr = vector;
printf("arr[%d] = %d", i, arr);
}
printf("count = %d, i = %d", count, i);

Так вот, в конце count = 4, i = 4, но arr = xx всего один раз принтится, ну и массив, соответственно, нихуя не заполняется.
Фигня в том, что struct объявлен как
struct MyStruct
{
32 arr[1]
}

Неужели он видя, что всего один элемент, просто пропускает остальные шаги, защищая меня от чего-то (а на самом деле заставляя сидеть лишние часы)?! Почему, блядь, ошибку-то об array out-of-bounds нельзя выдать, как при обычном доступе? Только сделав uint32_t *arr = myStruct.arr получилось нормально все итерации лупа пройти. Что за пиздец-то нахуй? Горю, сука. И не нагуглить же ничего, любое упоминание пропуска итераций лишь миллиарды вопросов о continue выдаёт.

Ответы197861981119815

29 июня, 20:32 403 1219786

>>1219783
тырпрайз, сотни конфигов и флагом по миллиарду файлов, поэтому ничего ни найти, ни поменять не смогу в любом случае.

29 июня, 20:48 404 1219801

>>1219777
>>1219776
Это мы с вами знаем, чем C отличается от C++ и как пишут на C, а как на C++. Я тому нубасу и хотел сказать, что C/C++ сложно, много хаков, не все концепции очевидны, течёт память и так далее. Чтобы уметь программировать и понимать основные концепции достаточно python так как порог по сравнению с С++ вообще отсутствует. Попробуй объясни школьнику семантику перемещения.

29 июня, 21:16 405 1219811

>>1219783
может, ты имел в виду
>myStruct.arr = vector;
ибо у тебя там
>myStruct.arr = vector;
и естественно компилятор выкинул цикл за ненадобностью, правда непонятно, нахуя он принтф выкинул

чё за компилятор кстати?

Ответы1981219961

16 Кб, 480x486
29 июня, 21:18 406 1219812

>>1219811
блять, сосака

[
i
]

29 июня, 21:21 407 1219815

>>1219783
Выход за границу массива, особенно на стеке, может привести к любой мистической хуйне. В том числе к перезаписи переменной i.

Ответы19961

29 июня, 21:34 408 1219825

>>1219773
На пике вообще инт вместо вектора. Или это там указатели такие?
Если функция булевая, очевидно перерасчитанный вектор сохраняется поверх исходного (по тому же указателю).

Ответы19937

29 июня, 22:57 409 1219901

>>1217811
Я эту задачу даже не понял.

Ответы19903

29 июня, 23:00 410 1219903

>>1219901
Делаю еще одну сейчас, но она сложнее.
Я уже подзаебался. Как сделаю выложу условия и решение.

Ответы19911

29 июня, 23:09 411 1219911

>>1219903
В смысле расписана задача как говно. Я байтоёб со стажем, но не осилил описание.
Браться за такое без уточнений — однозначно жрать говно потом.

Ответы19914

29 июня, 23:18 412 1219914

>>1219911
Че там не понятного? Все предельно понятно и просто. Ну я там уточнил только 1 момент, что c 0x24 не может начинаться текстовый пакет.

>Я байтоёб со стажем, но не осилил описание.
Может тогда тебе кажется? Или просто ты отупел от байтоебства?

29 июня, 23:56 413 1219937

23 Кб, 732x25625 Кб, 614x255

>>1219825
Ето указатель, да. Криво преобразует в псевдокод, и часто каждый раз еще и по разному, лел. Но все остальное вроде показывает правильно, кроме вот соглашения о вызове и переменных в параметрах функций.
>очевидно перерасчитанный вектор сохраняется поверх исходного (по тому же указателю)
И тогда получается, нужно просто вызвать эту функцию, которая пересчитает вектор ( с данными параметрами первой функции) , а реторн можно будет вообще не менять, тому что обращается к той же самой структуре, которую мы изменили при перерасчете?
Что то вроде такого? А бля, хуй знает как. https://pastebin.com/7939Gf4h
Хотел бы передать привет и спасибо чуваку, который помогал в прошлый раз, мыло проебал.

Ответы19947

12 Кб, 428x120
30 июня, 00:55 414 1219947

>>1219937
Так в принципе должно работать компилироваться.
Чтобы ComputeTgtLeadPosition смог перезаписать вектор, от него пришлось отломать const. увидишь такое в нормальном проекте - набей автору ебало
Во второй строчке можно обойтись dynamic_cast если CELauncher наследуется от CEGun, и вообще без каста если наоборот.

Ответы19977

30 июня, 03:34 415 1219961

>>1219811
Да, разумеется там arr[idx] = vector[idx] должно было быть.
Ладно бы он не присваивал значение массиву вне границы, но, блин, он ведь да, и printf'ы заигнорил, то есть, просто взял и пропустил все итерации, правильно инкрементировав при этом i, будто так и надо.

Компилятор gcc.

>>1219815
Не, там предварительно malloc'ается нужное (правильное) количество памяти, да и после arr в MyStruct есть ещё элементы, так что настолько далеко, чтобы i перезаписать, я уйти никак не мог. И уж точно бы i не становилась магически именно вот 4 всегда, если бы она вдруг перезаписывалась.

Ответы20004

30 июня, 03:57 416 1219969

>>1219505
Дык, а у меня вопрос, как это сделать не на сисклассами, а на нормальном современном C++. Это вообще возможно? Или там было задание по сям, а он по-приколу писал си через плюсы?

Ответы20036

30 июня, 06:44 417 1219977

>>1219947
Почему просто не убрать const из параметров? Просто изменение объекта, который ты передаешь как const это очень хуёвая затея.

Ответы20004

30 июня, 10:05 418 1219998

Извините, если вопрос дебильный. Я только изучаю эти штуки и путаюсь очень, поэтому пришел сюда спросить. Если платина, скажите, что читать, какой манул курить.

Типичный случай наследования. В базовом классе приватное поле с указателем. В классе-наследнике еще одно приватное поле с указателем. Теперь пишем свой оператор присвоения.
Для базового класса очевидно: старый указатель удалить, создать новый, инициализируя разыменованным из аргумента оператора присвоения. Объекты одного класса, видят приватные поля друг друга.
Для класса-наследника уже непонятно: с его приватным указателем процедура та же, а вот как подступиться к той части, которая инкапсулирована в базовом классе?
Я совсем не понял, что тут принято писать? Если вас не затруднит, скажите, в чем идея? Или у меня должны быть сеттеры-геттеры в protected, через которые все значения указателей перезаписываюся? Как это принято делать в самом простом варианте?

Вот код: https://pastebin.com/mnQcp6SS

Ответы2001320065

30 июня, 10:42 419 1220001

>>1214620
ValueHolder^ clone() const
{
return new ValueHolder(^this);
}
домик = двёдотька

Ответы20812

30 июня, 10:49 420 1220004

>>1219977
>хуёвая затея
Знаю, что хуёвая. Но вряд ли можно без последствий изменить сигнатуру функции, т.к. в выводе декомпилятора этот const есть.

>>1219961
Попробуй скопипастить куда-нибудь эту залупу и воспроизвести ошибку.

30 июня, 11:07 421 1220013

>>1219998
Тут надо как-нибудь извернуться и вызвать оператор присваивания у Base. Это можно сделать явно, типа Base::operator= ( this, d ) с соответствующими static_cast'ами.
Или сделать ссылку на Base:
Base& tmp = this;
tmp = d;

https://pastebin.com/60uZs4FP

Ответы20052

30 июня, 12:16 422 1220036

>>1219969
Ну вот же, вот >>1218034.
https://ideone.com/HNjdzP

30 июня, 12:49 423 1220052

>>1220013
Спасибо, круто! Работает.
А как правильнее: явно вызывать и делать приведения или как в пасте?

Можешь глянуть, у меня правильно получилось реализовать семантику передвижения? https://pastebin.com/nEt7cwmZ

Ответы20059

30 июня, 12:52 424 1220053

>>1218056
>>1218143
Кажется, вполне логично: одни ходят по собесам, другие работают. У двух категорий существенно различаются взгляды на стиль кодирования.

30 июня, 13:11 425 1220059

>>1220052
Хз как правильно, но явный вызов вроде получше выглядит.

В перемещающем operator= надо сначала освободить память по указателю value. Тем более, что в Derived ты это правильно написал.
Кстати, копирующий operator= в Derived накроется пиздой, если f = nullptr. Лучше сделать как в Base.

Ответы20083

30 июня, 13:46 426 1220065

>>1219998
>Вот код: https://pastebin.com/mnQcp6SS
if (this == &b) return ^this;

Охуенная оптимизация. Ради того, чтобы в 0.0001 перцента случаев код работал быстрее, мы замедлим остальные 99.9999 перцента случаев лишним бранчем в машкоде! Так победим!

delete value;
value = new int(^b.value);

Не exception-safe.

Derived temp(d);
std::swap(*this, temp);

Реализуй свой swap, а создание копии перенеси на плечи оператора присваивания. copy-and-swap называется.

Ответы20083

30 июня, 14:28 427 1220083

>>1220059
>явный вызов вроде получше выглядит
Явный — это variant 2? Меня терзают смутные сомненья. Если && в параметре и std::move в аргументе приведения справляются и по-отдельности, не поломается ли чего от избыточности. Слышал, что компиляторы сами оптимизируют возврат из функции в перемещение и, если дополнительно сделать move(), произойдет что-то лишнее вместо создания всего нужного сразу по адресу места возврата.

>сначала освободить память … копирующий operator= в Derived накроется пиздой
Боги, как можно было проворонить. Я невнимательный, оказывается. Спасибо. Всё ведь понимаю и так прошляпил.

>>1220065
>Охуенная оптимизация.
Это делалось не ради того, чтобы у невнимательного пользователя быстрее отработало самоприсвоение. Это во избежание непредсказуемых эффектов как раз для таких случаев.
Разве лучше было начинать тело с if(this!=&b) { и включать в эти фигурные скобки всё до } return ^this; или ты что-то другое имеешь в виду?

Где не exception safe, нужно проверить на нулевой указатель, так?

copy-and-swap пойду изучать, спасибо за совет.

Ответы2009520513

30 июня, 15:17 428 1220095

>>1220083
>Это во избежание непредсказуемых эффектов как раз для таких случаев.
Так пиши так, чтобы непредсказуемых эффектов не было даже при самоприсваивании. Это делается без проверок.

Ответы20622

30 июня, 18:43 429 1220164

Можно ли в консольную программу поместить гиперссылку? Допустим, по нажатию клавиши открывается сайт в браузере по умолчанию.

Ответы20216

30 июня, 19:30 430 1220216

>>1220164
#include <cstdlib>
и в том месте, где обрабатывается нажатие:
std::system(R"("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" http://2ch.hk)");

Ответы20225

30 июня, 19:36 431 1220222

Как из c++ кода запустить другую программу и НЕ ЖДАТЬ ЕЕ ЗАВЕРШЕНИЯ?
Нужно что-то вроде std::system("heavy-process"); только без вышеобозначенного недостатка.

Ответы2024520246

122 Кб, 800x585
30 июня, 19:39 432 1220225

>>1220216

30 июня, 19:53 433 1220245

>>1220222
Чёт не понял кто кого ждёт. Вызывающая программа выполняет std::system и идёт дальше по коду без ожидания (ожидание будет если ты используешь std::thread и потом join()). Запущенный системой процесс вообще не знает, кто его запустил, и тоже никого не ждёт.

Ответы2027520334

30 июня, 19:54 434 1220246

>>1220222
CreateProcess или красноглазые аналоги а-ля exec()

30 июня, 20:16 435 1220275

>>1220245
>выполняет std::system
>выполняет
Запускаемый процесс будет выполняться часами и я не хочу ждать пока он завершится.

Ответы203042033620370

30 июня, 20:51 436 1220304

>>1220275
std::system выполняется ровно столько, сколько системе нужно на создание нового процесса (получение идентификатора, выделение памяти, инициализация блока управления и постановка в очередь на выполнение). На всё это требуется пару секунд. О каких часах идёт речь?

Ответы20328

30 июня, 21:20 437 1220328

>>1220304
Таки нет, system ждет завершения процесса.

int main()
{
system( "timeout /t 30" );
cout << "Timeout" << endl;

system( "notepad" );
cout << "Notepad closed" << endl;
}

Ответы20349

30 июня, 21:23 438 1220333

Ананасы, интересна такая фигня. В наличие есть слабый ноут и мощный стационарник. В силу определённых причин работаю за ноутом. Но на нём приложение собирается за 15 минут, когда на стационарнике за 5. И вот что мне интересно - могу ли я, работая за ноутом, каким-то хуем собирать приложение на компе и получать на ноуте готовый .exe и .pdb?

Ответы2033720382

30 июня, 21:23 439 1220334

>>1220245
А что меняется когда я использую std::thread? Если завести отдельный поток с вызовом system, то он будет ждать, а если выполнять в основном потоке то нет? Нихуя не понял.
мимо

Ответы20355

30 июня, 21:23 440 1220336

>>1220275
Если тебе надо прибить процесс из программы и название его уникально, то можешь опять использовать std::system
std::system(R"("taskkill /IM chrome.exe")");
Если таких процессов много, то через win api CreateProcess() создаёшь процесс и получаешь от неё process handle, а потом TerminateProcess(process handle).

30 июня, 21:24 441 1220337

>>1220333
Ну да. Отправляешь файлы на комп, запускаешь на компе компилятор, отправляешь с компа .exe и .pdb. Придется обмазаться файлообменом и сценариями.

30 июня, 21:34 442 1220349

>>1220328
потому что надло вот так:
std::system(R"(start notepad)");

30 июня, 21:37 443 1220355

>>1220334
Не, я прост привёл пример, когда основной поток ожидает выполнение дочернего. К system это не относится.

30 июня, 21:55 444 1220370

>>1220275
Сделай запуск отдельным потоком или асинхронно.
В чём проблема-то?

30 июня, 22:08 445 1220382

>>1220333
А зачем тебе всё это иметь на ноуте? Обычно народ подключается удалённо к рабочей машине из дома и на ней всё делает.

30 июня, 23:57 446 1220442

Как захватить мютекс без риска дедлока внутри другово мьютекса?

Пример:
std::mutex m1, m2;
void foo(bool b)
{
std::lock_guard<std::mutex> lk(m1);
// какие нить действия
....
if(b)
{
//тут надо захватить m2. Как?
}
}

Ответы20450

1 июля, 00:20 447 1220450

>>1220442
Захватить сразу два. Или всегда и везде захватывать m1 и m2 в одном порядке. но заебёшься

std::lock( m1, m2 );
std::lock_guard<std::mutex> lck1( m1, std::adopt_lock );
std::lock_guard<std::mutex> lck2( m2, std::adopt_lock );
...

Ответы20451

1 июля, 00:25 448 1220451

>>1220450
Про сразу два я знаю, но весь смысл в том, чтобы не захватывать второй без надобности.

108 Кб, 1366x768
1 июля, 02:07 449 1220484

Сап. Такое дело. У меня не работает ВС и я уже давно пользуюсь КБ (по вузовской хуйне, алгоритмы и все такое).
Сейчас необходимо запустить код отсюда: https://msdn.microsoft.com/ru-ru/library/system.io.ports.serialport?cs-save-lang=1&cs-lang=cpp#code-snippet-2
И в КБ нихуя не запускается, можете подсказать, в чем дело и что сделать, чтоб запустить в КБ?

Ответы20487

1 июля, 02:17 450 1220487

>>1220484
Потому что это не C++, а Managed C++. Конпелировать его умеет только VS.

Ответы2048820499

1 июля, 02:19 451 1220488

>>1220487
> Managed C++
Точнее C++/CLI. Он конпелируется поверх .NET и от C# почти ничем не отличается, кроме C++-подобного синтаксиса.

Ответы20495

1 июля, 03:10 452 1220495

>>1220488
>Он конпелируется поверх .NET и от C# почти ничем не отличается, кроме C++-подобного синтаксиса.
Из него можно обращаться к обычному С++ коду. Поэтому на C++/cli удобно писать обертки для плюсовых классов.

Ответы20499

1 июля, 03:27 453 1220499

89 Кб, 1366x76898 Кб, 1366x768100 Кб, 1366x768

>>1220487
>>1220495
Ок, может тогда подскажите, как ВС починить, если идеи есть. В общем, отказывается компилировать код. Любой. Пишет, что проект устарел, предлагает пересобрать и появляется ошибка.
Переустанавливал ВС несколько раз, сейчас снова поставил -- то же самое.
Гугл не спасает -- решений нет, хотя у многих такая хуйня.

Ответы2050120816

1 июля, 03:43 454 1220501

>>1220499
Пустой проект с int main() {} компилируется? Ты создаешь консольное приложение, туда МС по дефолту хучу куйни напихивает

Ответы20506

82 Кб, 1366x768
1 июля, 03:59 455 1220506

>>1220501
Да, компилируется.
А консольное не хочет.

Ответы2050720816

1 июля, 04:04 456 1220507

>>1220506
Первое правило использования вижуал студии - всегда только пустые приложения. Всю МС парашу прегенеренную не стоит юзать для крестов. В предыдущем кейсе мне думается ты что-то наворотил с прекомпилед хедерами (стдафкс которые). Они как-то очень через сраку работают

Ответы20508

1 июля, 04:18 457 1220508

>>1220507
Да это сам вижуал так работает, я хз что делать. Можешь любой проект скинуть, он не соберется. Ощущение, что только переустановкой винды пофиксится все.

Можно как-то ту хуйню из первого моего поста через код блокс запустить? Я ебанусь винду менять, другого пеки нет.

Ответы20729

1 июля, 05:27 458 1220513

>>1220083
>Где не exception safe, нужно проверить на нулевой указатель, так?
Ты знаешь, что такое exception?

Ответы20626

1 июля, 11:47 459 1220622

>>1220095
Вот тут не понимаю. Как предполагается писать перемещающее присваивание, чтобы все не падало без проверки на самоприсваивание, например?

Ответы20758

1 июля, 11:50 460 1220626

>>1220513
Исключение. Кидается при исполнении программы. Здесь ты намекаешь, что у меня может произойти разыменование nullptr. Но там не должен возникать nullptr, это такой инвариант, который нигде не нарушается по задумке. Поэтому мне кажется лишней еще одна проверка.

Если не так понял, то скажи, что ты имеешь в виду?

Ответы20758

1 июля, 14:47 461 1220729

>>1220508
> Да это сам вижуал так работает, я хз что делать.
Добавь в начало своего Source.cpp:
#include "stdafx.h"
Либо в свойствах файла Source.cpp поставь precompiled headers "не использовать".

1 июля, 14:59 462 1220733

Есть че по ООП на крестах? книжечка там, курс?

82 Кб, 418x304
1 июля, 15:29 463 1220756

Ответы2079520817

1 июля, 15:30 464 1220758

>>1220622
copy and swap
>>1220626
ты освобождаешь память до того, как убедишься, что новая память у тебя есть

1 июля, 15:34 465 1220762

Анон, возможно у меня вопрос не очень рилейтед, но. Пишу софтинку, которая втч удаляет файлы.
У моего железа\системы есть какой-то баг, который периодически препятствует многократному последовательному удалению файлов. Т.е. например удаление ста файлов через проводник работает нормально, а удаление через фар сотни файлов - уже как повезёт.
Я это обошёл в дебаг-версии удалением через
std::system("erase \filename.rxr");
Предположив что этот баг может быть не только у меня, я хочу обойти его и в релиз версии.
remove("filename.rxr") вызывает этот баг.
Создание нового объекта, который удаляет файл, а затем умирает - тоже вызывает этот баг.
Какие есть варианты для того чтобы сделать удаление устойчивое к подобной проблеме?

1 июля, 16:19 466 1220795

>>1220756
Есть два стула: на одном шаблоны кручены, на другом полиморфизм дроченый.
сяду на оба и еще препроцессором обмажусь

1 июля, 16:27 467 1220812

>>1220001
Спасибо, эти штуки-то как раз понятны. Я у Страуструпа о них читал.
А вот вопрос мой был о предыдущей задаче, 7, а не 8. Там требуются какие-то placement new и создание своего псевдо-массива-вектора для хранения типов без операции присвоения.

Ответы20835

1 июля, 16:28 468 1220816

>>1220499
Может из-за того что кириллица в пути?
>>1220506
Тут её нету.

1 июля, 16:28 469 1220817

>>1220756
Во во, такая же хуита.

1 июля, 16:31 470 1220819

>>1214620
>В каких книгах/гайдах это всё хозяйство объясняется?
The
C++
Programming
Language
Fourth Edition
13.6 A vector Implementation

1 июля, 16:53 471 1220835

>>1220812
В new можно передать указатель на уже выделенную память.

char^ raw = new char[sizeof(T)];
T^ d = new (raw) T( 4.2 );

Но надо проверять выравнивание иначе случится страшная хуйня.

Ответы2084220852

1 июля, 16:59 472 1220842

>>1220835
> Но надо проверять выравнивание
Если у T нет еxtended alignment, то не надо.

1 июля, 17:21 473 1220852

>>1220835
То есть, если массив, создавать так?

size_t array_size; // аргументы конструктора - количество элементов и значение по-умолчанию
T value;
char☆ raw = new char[sizeof(T)☆array_size]; // (1) выделили сначала память на все элементы
T☆ elements = new (raw) T[array_size]; // (2) потом создали массив в ней

Хорошо, а как заполнять? Допустим, циклом пробежаться

for(size_t i = 0; i!=array_size; ++i)
elements = new (raw+(i☆sizeof(T))) T(value); // смещаемся в этом указателе на память
elements = new T(value); // или достаточно (1) что массив на ней создали?

А с как быть с тем, что присвоение запрещено? Вот моя гипотеза:
for(size_t i = 0; i!=array_size; ++i)
static_cast<T☆>(raw+i☆sizeof(T)) = new T(value);

Так правильно или тогда становится избыточным (2) и как обращаться к этим элементам потом?

Ответы208542090820924

1 июля, 17:25 474 1220854

>>1220852
Неудобоваримо, пробелы съелись. Вот код: https://pastebin.com/FkNeZGWh

1 июля, 17:39 475 1220866

Продублирую вопрос.
Можно с помощью Code Blocks запустить этот код: https://msdn.microsoft.com/ru-ru/library/system.io.ports.serialport?cs-save-lang=1&cs-lang=cpp#code-snippet-2 ? Как мне написали тут, этот код на CLI.
Пользоваться ВС на Винде нет возможности.
Олсо, если накачу убунту, на ней можно будет его запустить? (Мб, вижуал поставить на динукс). Если да, подскажите как, пожалуйста.

Ответы2090520907

1 июля, 18:16 476 1220893

Нужен совет мудрых!!!
>Написать программу, формирующую по исходному BMP файлу новый BMP файл, в котором правая половина является зеркальным отражением левой
Как подобное реализовать, ведь в BMP данные записаны построчно снизу вверх, ничего в голову даже не лезет, только очень сложные костыли которые вряд ли сработают

Ответы2095521762

1 июля, 18:28 477 1220905

>>1220866
Вижуал студия онли на винда работает.

1 июля, 18:34 478 1220907

>>1220866
В гугле же есть ответы. Ставишь компилятор VS (то есть отдельно без установки студии) и вызываешь его из CB с ключом /clr.
Второй вариант это поставить виртуальную машину и накатить на неё винду и студию.

1 июля, 18:35 479 1220908

>>1220852
> (2) потом создали массив в ней

Смысл создавать сразу массив? Лол.

1 июля, 19:27 480 1220924

>>1220852
1. Выделить память.
char© raw = new char[N © sizeof(T)];

2. Заполнить массив.
for( size_t i = 0; i < N; ++i )
new (raw + i © sizeof(T)) T( value );

всё.

Ответы20937

1 июля, 20:32 481 1220936

Что скажете об ide code::blocks? Собираюсь вкатываться, и оно пока больше всего приглянулось. меньше всего visual studio

Ответы20939209722107221077

1 июля, 20:33 482 1220937

>>1220924
Юзай,пожалуйста pastebean / ideone. Как в faq написано

1 июля, 20:34 483 1220939

>>1220936
А как к qtcreator тут аноны относятся?

Ответы20943

1 июля, 20:39 484 1220943

>>1220939
Норм. Только бы нормальные средства для рефакторинга запилили. И отладка под виндой хуйня

1 июля, 21:05 485 1220955

>>1220893
Хули сложного? Для каждой строки тебе нужно сделать следующее: отбросить правую половину и перезаписать ее зеркальным отражением левой.

Ответы20959

1 июля, 21:14 486 1220959

>>1220955
Спасибо что пересказал задание, я не до конца понимаю как работать с BMP файлами, если пониаешь как это реализовать - объясни

Ответы20961

1 июля, 21:21 487 1220961

>>1220959
Да, я понимаю, как это реализовать, я работал с bmp. А пересказал задание я для того, чтобы ты его прочитал. Пересказываю еще раз, только подробнее, план таков:
1) Прочитать спецификацию на формат bmp.
2) Выяснить, что попиксельные данные изображения в файле находятся по такому-то сдвигу. Узнать, где взять этот сдвиг.
3) Начать читать по сдвигу по столько байт, сколько указано где-то еще. Для этого надо опять прочитать документацию.
4) См. предыдущий пост.

Ответы20962

1 июля, 21:23 488 1220962

>>1220961
Понялпринял, бери курс на документацию

Ответы20963

1 июля, 21:23 489 1220963

>>1220962
беру*

1 июля, 21:34 490 1220972

>>1220936
>Что скажете об ide code::blocks? Собираюсь вкатываться, и оно пока больше всего приглянулось. меньше всего visual studio
>
Зайди на какой-нибудь агрегатор вакансий (тот же hh) и в поиске введи названия разных ide. Выбери из топ 3 то, что тебе больше нравится (VS, QtCreator и кто-то ещё). Не стоит тратить время на освоение маловостребованных ide.

Ответы21088

2 июля, 02:09 491 1221072

>>1220936
ненужная помойка, в которой сложнее laba1.cpp ты ничего не напишешь. Студия де-факто стандарт индустрии.

Ответы210882112121282

2 июля, 02:43 492 1221077

>>1220936
VS с решарпером под плюсы офигенна, даже инклуды автоматом ставит, все кейсы по енуму и тп. КютКреатор почти так же хорош, при включенном статическом анализе кода подсвечивает все ерроры и варнинги до компиляции.

2 июля, 05:58 493 1221088

>>1220972
Хуёвый совет - выбирать ide на будущее. IDE должна быть удобной сейчас, для обучения. Кодблокс подойдет, он как раз для laba1.cpp.

>>1221072
>Студия де-факто стандарт индустрии.
Под винду мейнстрим, но только под винду, а винда сама по себе не стандарт индустрии, лол. Фишка студии в том что это универсальный солдат под windows, не более.

Ответы2129321337

2 июля, 09:24 494 1221121

>>1221072
Мы на эклипсе пишем, потому что там есть статическое дерево вызовов, удобно смотреть зависимости.

2 июля, 16:01 495 1221282

>>1221072
>Студия де-факто стандарт индустрии.
Если ты пишешь какое-то говно под винду то может и да, и то я дома сижу с CLion, ибо студия это говно.
А на линуксе это в основном Eclipse, хоть я его и не навижу и не понимаю как этой парашей пользоваться.
На линуксе сначала юзал QtCreator, потом с появлением Clion только на нем и сижу.

Ответы2129321434

2 июля, 16:27 496 1221293

>>1221088
Я сомневаюсь, что что-то есть удобнее студии. Скорее всего горе-вкатывальщик увидел больше, чем 3 менюшки, испугался, и закрыл.

Будущий результат "вкатывания" уже понятен по подходу.

>>1221282
Студия это говно. 0 аргументации, ничего. Просто студия это говно. Хорошо, проходи мимо. Дяди тут деньги зарабатывают.

Ответы21346

2 июля, 17:56 497 1221337

>>1221088
Я никак иначе не пробовал кодить, кроме как в MVS. (Онлайн компиляторы для мелких кусков не в счет)
Нужно ли изучать GCC/clang или что-то там еще?
Я могу считаться полноценным программером, если не знаю на практике других сред?

Ответы21370

2 июля, 18:03 498 1221346

>>1221293
>Студия это говно. 0 аргументации, ничего. Просто студия это говно. Хорошо, проходи мимо. Дяди тут деньги зарабатывают.
Да не гори ты так, студентик.
Студия говно, потому, что компилятор там говно + студия говно потому, что она только под винду + студия говно потому, что она тупая как пиздец, и ее интелисенс глубоко отсасывает по сравнению с CLion + студия говно, потому что они нихуя не поддерживает CMake и Make + студия говно потому что она не поддерживает GCC + студия говно потому что это блядский майкрософт, что уже по определению говно.

Ах да, если что дяди делают деньги разрабатывая сервера и распределенные системы под linux. На винду делают либо игрушки для школо-пидоров, либо всякое офисное говно.

В общем, любой уважающий себя разработчик не будет просто так шквариться об винду и студию.

Ответы213642143421700

2 июля, 18:13 499 1221359

Что стало с языком C++?
Страуструп пишет, что для совершенной пересылки нужен std::forward() и показывает это на таком примере:
https://pastebin.com/UeamWjJY

А у меня то, что он приводит как проблему и причину применять forward работает спокойно и без всякой дополнительной возни. Что-то изменилось в языке? Советы 2008 года устарели и теперь они не актуальны? Что не так?

Ответы21373

2 июля, 18:18 500 1221364

>>1221346
Я горю исключительно от твоей тупости.
Что такое - компилятор говно? Что такое - тупая как пиздец? Что ты вообще несешь? Чем тебе майкрософт не угодил? В красноглазую парашу нассал? Симейк поддерживается, Мейк - совсем ебнулся чтоли в 2018 то? GCC поддерживается.

Таблетки выпей "уважающий себя разработчик", и иди laba2.cpp допиши.

Ответы2136721526

2 июля, 18:21 501 1221367

>>1221364
>Мейк - совсем ебнулся чтоли в 2018 то?
Все ясно с тобой.
Дальше спорить с таким невежественным говном, как ты, я даже не собираюсь.

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

Ответы21368

2 июля, 18:26 502 1221368

>>1221367
Давай, иди в консольке поебись, не лезь в нормальные дискуссии. Еще можешь в ВИМе попердолиться, каменный век же на дворе.

Ответы21377

2 июля, 18:27 503 1221370

>>1221337
Ты знаешь, что такое gcc/clangкомпилятор и что такое студияIDE

Ответы21392

2 июля, 18:31 504 1221373

>>1221359
Потому что ты скопипастил не тот код. В твоём случае оно даже конпелироваться не будет, поскольку factory не принимает аргументов.

Скорее всего имелось в виду это: https://ideone.com/WWZhhL

И если не используешь кастомное удаление объекта, то используй make_shared вместо конструктора.

Ответы2139121632

2 июля, 18:33 505 1221377

>>1221368
Буквально каждое твое слово говорит о твоем низком уровне развития и полное непонимание темы.

Ответы21383

2 июля, 18:38 506 1221383

>>1221377
Пусть будет так. Правда есть объективные пруфы об обратном. Но тебе виднее.

2 июля, 18:49 507 1221391

>>1221373
Я скопипастил отсюда, собственно статья Страуструпа и примкнувших сотоварищей: https://www.artima.com/cppsource/rvalue.html
пример в финальной части повествования без аргументов, но следуя его текстовому описанию, у меня получилось как-то так:
https://ideone.com/QJ1Ij1

Я что-то не правильно понял в изначальном посыле или компиляторы это уже оптимизируют?

Ответы21393

2 июля, 18:54 508 1221392

>>1221370
Gnu C Compiler изначально, но теперь, видимо, основной компилятор для C++ для тех, кто в линуксе.
clang это какая-то составная часть еще одного компилятора, тут уже не знаю.
IDE это где всё уже на месте и достаточно кнопочку нажать, как раз мой уровень владения.
Нужно уметь писать из строки и скачивать трансляторы/компиляторы/линковщики/компоновщики и танцевать с этими бубнами или это уже пережиток прошлого и можно быть полноценным прогером из готовой среды? Или засмеют?

2 июля, 18:55 509 1221393

>>1221391
Форвард нужен, чтобы прокинуть T&&, иначе превращается в T&.
https://ideone.com/qlfwKC

Ответы21397

2 июля, 19:03 510 1221397

>>1221393
Можно как для ДЦП-додика-патау, почему Страуструп пишет, что должно выдать ошибку компиляции, а у меня запускается и всё норм? https://ideone.com/QJ1Ij1

Для чего нужны, статью читал. Но вот дошло до примеров — и ступор. Примеры противоречат постановке проблемы. Проблемы как бы и нет вовсе. Должно не запускаться, но всё ж работает. Или это unspecified behaviour моего компилятора и просто нельзя на такое полагаться?

Ответы21425

2 июля, 19:38 511 1221425

>>1221397
Ну представь, что в примере, который я скидывал, у C не было бы конструктора C( const Val& ).
Тогда вариант без форварда действительно не скомпилируется.

Зачем всё это? Чтобы при создании объекта через функцию конструктор мог принимать rvalue ссылки и соответственно применять разрушающее копирование (в смысле перемещение). Без форварда параметров конструктор получит const lvalue и будет вынужден копировать все данные.
А в твоем коде в конструктор передается вообще указатель. Очевидно, что будет работать и так.

Ответы2142821456

2 июля, 19:40 512 1221428

>>1221425
и статья про ссылки
https://habr.com/post/322132/

2 июля, 19:48 513 1221434

>>1221282
>я дома сижу с CLion
А мы на работе сидим в QtCreator / MSVS. Улавливаешь?

>>1221346
>интелисенс глубоко отсасывает
для тех кому не нравится intellisense давно придумали visual assist

>>1221346
>не поддерживает CMake
https://blogs.msdn.microsoft.com/vcblog/2016/10/05/cmake-support-in-visual-studio/

Ты бы поменьше дома сидел. А то мозги у тебя совсем жЫром заплыли.

Ответы2144721460

2 июля, 20:07 514 1221447

>>1221434
Бля ты такой тупой, просто пиздец.
Там имеется ввиду, что помимо работы я использую CLion дома, где у меня винда стоит, а не VS.

>visual assist
Ага, чтоб это говно нормально работало надо еще кучу плагинов по конским ценам покупать.

Вопрос на самом деле даже не в студии, а том, что какой адекватный человек будет писать на С++ под виндой?
Для C# студия да вроде норм, ибо она под это заточена, но по С++ она отсасывает полностью во всем.

Ответы21476

2 июля, 20:33 515 1221456

>>1221425
Спасибо. Вникаю. Тяжеловато.
Есть ли смысл не глядя ставить forward() там, где сомневаешься? Или бывают вредные побочные эффекты?
И еще уточнение. Я правильно понимаю, что по результату работы std::move(x) это то же самое, что static_cast<decltype(x)&&>(x)?

Ответы2146621483

2 июля, 20:36 516 1221460

>>1221434
Позвольте встрять с вопросом. Интелисенс вообще нужен? Я просто нубас и пока что иногда подглядываю, что он там предлагает, чтобы различать точку и стрелку, когда имею дело с указателем. Но зачем он опытному разработчику?

Ответы21470

44 Кб, 637x579
2 июля, 20:49 517 1221465

Как функцией fread читать поток в обратную сторону ?
Делаю костыли через fseek, но они не работают

2 июля, 20:50 518 1221466

>>1221456
там сначала снимается ссылка, а потом делается каст:

template<class T> struct remove_reference { typedef T type; };
template<class T> struct remove_reference<T&> { typedef T type; };
template<class T> struct remove_reference<T&&> { typedef T type; };

static_cast<typename remove_reference<T>::type&&>(arg)

Ответы2148321484

2 июля, 21:00 519 1221470

>>1221460
Например позволяет не лазить по заголовкам, чтобы выяснить какие параметры принимает тот или иной метод и как он перегружен. Ставишь каретку в скобки - ctrl+shift+space и он тебе показывает полную сигнатуру метода и его вариации.

Ответы21633

2 июля, 21:01 520 1221471

>>1218017
А у Линукса какая API?

2 июля, 21:08 521 1221476

>>1221447
Ты видимо недавно работать начал. Задача определяет инструменты, а не наоборот.

Ответы21490

2 июля, 21:17 522 1221483

>>1221456
>static_cast<decltype(x)&&>(x)
Если x будет l-value, то decltype вернёт T_x&, и получится static_cast<T_x& &&>(x). Затем произойдёт сжатие ссылки T_x& && до T_x& и в результате будет static_cast<T_x&>(x). А надо, чтобы было T_x&&. Поэтому >>1221466

2 июля, 21:19 523 1221484

>>1221466
Выходит, без remove_reference это даст & вместо честных && и выберется конструктор копирования вместо присвоения?

Ответы21494

2 июля, 21:29 524 1221490

>>1221476
Я-то работаю уже лет почти 10 лет и понимаю, кому и для чего нужна винда, а ты видимо нет.
Если даже брать всякие десктопные приложухи, коих малая часть по сравнению с кол-вом серверного ПО, которое в абсолютном большинстве под линукс, и если отбросить всякие кроссплатформенные приложухи типа браузеров, мессенджеров, видеоплееров и т.п ( хотя больше то и не надо на компе ничего в 2018-то году ), то получается, что конкретно под винду на С++ пишется очень мало софта и в основном это игры, для всего остального уже давно юзают С#, ибо он как ты сказал, задача определяет инструменты, и кому надо себе мозги ебать с плюсами, когда на Си шарпе можно сделать это в 25 раз быстрее и надежнее.

Ответы21515

2 июля, 21:35 525 1221494

>>1221484
Там будет плавающий результат в зависимости от категории выражения. Если будет выведен &, то произойдёт вызов конструктора копирования или оператора присваивания копированием.

2 июля, 21:55 526 1221515

>>1221490
Предположу, что ты все 10 лет писал серверное по под линуксом, а по выходным сидел дома.

Давай начнём наш экскурс, например, с по для трёхмерного моделирования (спектр применения от игр и анимации до инженерного проектирования и инженерных рассчётов).
https://en.wikipedia.org/wiki/Comparison_of_3D_computer_graphics_software
Как ни странно, но почти всё работает подвендой.
Далее, следуя твоей логике получается что всё надо писать на C#. Но там же всякие вычи, алгебра, дифгем, матан, который на интерпретируемом языке никто писать не станет?

Ответы2152421534

2 июля, 21:58 527 1221524

>>1221515
> на интерпретируемом языке никто писать не станет
С# - компилируемый язык. Хотя и работает под VM.

2 июля, 22:00 528 1221526

>>1221364
Я уверен что это бред максималистичного школьника, но в одном он прав - у CLion ОХУЕННЫЙ анализатор, студия рядом не стояла.

Ответы21581

2 июля, 22:03 529 1221534

>>1221515
Даже если ты возьмешь все фотошопы, все 3д редакторы, все кады и прочую поеботу с графеном - это будет 0.001 часть от всего софта который пишется.

Ладно, чтобы тебе было понятнее.
Google, Amazon, Yandex, Facebook, Vk и т.д
Все это написано под линукс, представь сколько там людей работает, сколько кода написано, и сколько человеко-часов вложенно.
А теперь сравни все это с какими-то 3д редакторами, которые юзают только профессионалы, а те сервисы юзают почти все жители на земле.

>C#
>интерпретируемый
Обосрался с этого, сразу видно твой уровень.

Ответы215482159221611

2 июля, 22:21 530 1221548

>>1221534
Вот это манёвры. Сначала ты говоришь, что всякая попса типа игр и дестктопного по, которым пользуется кучу народу ежедневно это хуета, а вот серверное по это круто. Потом ты переобуваешься и говоришь - не не, инженерное по для спецов это хуета, то ли дело вконтактик, яндекс такси, магазин на диване.

Ответы21567

2 июля, 22:35 531 1221556

я ебу байты.

Ответы21558

2 июля, 22:37 532 1221558

>>1221556
тебе сюда
https://2ch.hk/pr/res/1206626.html (М)

2 июля, 22:56 533 1221567

>>1221548
Че несет...

Ладно, иди спать, таблетки не забудь принять.

2 июля, 23:30 534 1221581

>>1221526
Решарпер видел? Студия с ним в монстра превращается

Ответы2163421645

3 июля, 00:17 535 1221592

>>1221534
Да, нужно только серверное ПО и чорная консоль. Команды к нему вбивать. Тебе бы в 70ые к мейнфреймам.

3 июля, 00:34 536 1221598

>>1208905 (OP)
В чем отличие функций из <math> и <math.h>?

Ответы21599

3 июля, 00:36 537 1221599

>>1221598
Наверное имелось в виду <cmath>? Первая может содержать расширения, принятые комитетом C++, но которые отсутствуют в Си.

3 июля, 01:12 538 1221611

>>1221534
>Google, Amazon, Yandex, Facebook, Vk и т.д
>Все это написано под линукс
Да, и почти все написано на PHP, Python, Javascript.

Ответы21637

Перекат 3 июля, 01:23 539 1221620

https://2ch.hk/pr/res/1221619.html (М)
https://2ch.hk/pr/res/1221619.html (М)
https://2ch.hk/pr/res/1221619.html (М)
https://2ch.hk/pr/res/1221619.html (М)

3 июля, 01:45 540 1221632

>>1221373
Я взял твой пример за образец и немного расширил. Вот, что получилось: https://ideone.com/X0lFrl

Кратко выводы. После задействования forward()
- становится возможно передавать rvalue по значению,
- передавать копируемое lvalue и всякие rvalue по неконстантной lvalue ссылке становится невозможно,
- передача по константной lvalue ссылке не изменяется,
- ранее недоступная передача по rvalue ссылке становится доступна для всех рассмотренных типов,
- покуда тип это определяет, передача безымянного по значению подменяется передачей по rvalue ссылке,
- Я забыл рассмотреть тип, который можно копировать, но нельзя перемещать.

Ответы21636

3 июля, 01:49 541 1221633

>>1221470
Надо будет этот трюк запомнить. Я обычно набирал запятую, чтобы эта штука появилась.
Так значит, в других средах такого нет?

Ответы21653

3 июля, 01:52 542 1221634

>>1221581
Можно на английском название точное, как это скачать?

3 июля, 01:56 543 1221636

>>1221632
Ты забыл ещё const T&& ссылки. Тогда компилятор будет вылетать с ошибкой, если прислана не rvalue ссылка и никогда не будет копировать аргумент.

3 июля, 01:58 544 1221637

>>1221611
Вот ето манямирок

3 июля, 02:17 545 1221645

>>1221581
https://www.jetbrains.com/resharper-cpp/

3 июля, 02:40 546 1221653

>>1221633
Во всех средах есть такие помошники. Для некоторых можно установить сторонний плагин типа того же visual assist.

3 июля, 09:04 547 1221700

>>1221346
>студия говно потому что это блядский майкрософт, что уже по определению говно
Суть школохейтора

3 июля, 11:43 548 1221762

>>1220893
А в чем проблема считать данные в массив чаров, привести его к массиву rgbtriple/rgbquad, реверснуть его, засенить одну половину изображения другой, снова реверснуть и записать в файл?

3 июля, 15:31 549 1221900

Анон, какие проблемы часто вылезают при начале эксплуатации заказчиком? Хочу по максу все вылизать, чтоб не оподливиться.

Ответы24162

7 июля, 17:45 550 1224155

Йо, есть задачка, которая требует много (~20) операторов разветвления (if else). По сути это задача путника, что идет по дороге, на которой он может повернуть на любую из них. Из-за этого приходиться писать гигантские конструкция

if(leftSide)
{
// Что-то делает классное
if(newLeftSide)
{
// Еще что-то классное

if(...)
{
...
} else
{
...
}

} else if(newRightSide)
{
// Еще что-то классное

...

}

} else if(rightSide)
{

...

}

В общем тоска. Выглядит это громоздко и нечитаемо (почти). Какие существуют подходы к организации подобных длинных разветвленных алгоритмов?

7 июля, 17:45 550 1224155

Йо, есть задачка, которая требует много (~20) операторов разветвления (if else). По сути это задача путника, что идет по дороге, на которой он может повернуть на любую из них. Из-за этого приходиться писать гигантские конструкция

if(leftSide)
{
// Что-то делает классное
if(newLeftSide)
{
// Еще что-то классное

if(...)
{
...
} else
{
...
}

} else if(newRightSide)
{
// Еще что-то классное

...

}

} else if(rightSide)
{

...

}

В общем тоска. Выглядит это громоздко и нечитаемо (почти). Какие существуют подходы к организации подобных длинных разветвленных алгоритмов?

Показать весь текст
Ответы24300247822485824871

7 июля, 18:05 551 1224162

>>1221900
1. Совместимость среды. Если не тестировал программу на той же конфигурации (ОСь, установленные программы, "железные" характеристики), что будет у заказчика, то ожидай проблем.
2. Выключение программы вместо исключений и исправление проблем. Если у тебя прога может вырубиться на 23 минуте обработке данных из-за любого exception встреченного по пути, то это большая беда. Обязательно сделай возможность восстановления данных при аварийном выключении программы, чтобы при повторном запуске не терять пользователь не терял время.
3. Системные пути. Не забудь, что системные пути у тебя и у заказчика - это разные пути. В принципе это отсылает к пункту 1.
4. Графический интерфейс. Должна быть привязка к разрешению и типу экрана. Иначе всё поедет к чертям собачим. Опять таки - пункт 1.
5. Кодировка текста. Твоей кодировки может не быть у заказчика. Особенно, то что касается кириллицы. И опять это пункт 1.

Ничего больше вспомнить не могу. Удачи.

Ответы24342

7 июля, 23:07 552 1224300

>>1224155
switch ... case, блеать. "Подходы к организации разветвленных алгоритмов", а сам условных конструкций языка не знаешь.

Ответы24347

8 июля, 02:30 553 1224342

>>1224162
Проиграл с быдла. Если что-то у заказчика не идёт - он идёт нахуй. Пусть ставит себе нормальную ось

Ответы2434824372

8 июля, 03:23 554 1224347

>>1224300
Я даже не знаю как выразить свои чувства в слова. Хорошо. Я знаю конструкцию switch case. Как она избавит код от громоздкости?

switch path
case Left
....
switch newPath
case LeftSide
....
switch newNewPathLeft
case LeftLeftSide
....
case RightSide
switch newNewPathRight
case LeftLeftSide
...
case Right
....

Ответы2434924372

8 июля, 03:24 555 1224348

>>1224342
Хаха. Понятно. В треде кодер (извините, программист) с зп 300 к/с.

8 июля, 03:36 556 1224349

>>1224347
Хотя я что-то упоролся вчера вечером. Решение очевидно. Просто вынести каждую конструкцию if else в отдельные методы. Это уменьшит громоздкость и сложность кода. Программировать за полночь всегда плохая идея.

if(leftPath)
{
openAppWithBear();
}
else if (rightPath)
{
openAppWithApple();
}
.
.
.
openAppWithBear()
{
bool isOpen = openWindow();

if(isOpen)
{
goToWindow();
}
else
{
hitWindow();
}

}
.
.
.
openAppWithApple()
{
bool isEaten = eatApple();

if(isEaten)
{
cleanTable();
}
else
{
lookAround();
}

}

8 июля, 03:36 556 1224349

>>1224347
Хотя я что-то упоролся вчера вечером. Решение очевидно. Просто вынести каждую конструкцию if else в отдельные методы. Это уменьшит громоздкость и сложность кода. Программировать за полночь всегда плохая идея.

if(leftPath)
{
openAppWithBear();
}
else if (rightPath)
{
openAppWithApple();
}
.
.
.
openAppWithBear()
{
bool isOpen = openWindow();

if(isOpen)
{
goToWindow();
}
else
{
hitWindow();
}

}
.
.
.
openAppWithApple()
{
bool isEaten = eatApple();

if(isEaten)
{
cleanTable();
}
else
{
lookAround();
}

}

Показать весь текст

8 июля, 11:11 557 1224372

>>1224342
>>1224347
Господа, вы серьезно? ну вы и дауны, особенно первый

Ответы24599

8 июля, 17:43 558 1224599

>>1224372
Обоснуй, быдло

Ответы24782

8 июля, 23:22 559 1224782

>>1224599
Быдло на связи.

Начну со второго. Этот >>1224155 товарищ еще не выучил основы языка (самые-самые основы), а бросается задавать вопросы по некоей задаче.
Он смахивает на студента, которому завтра сдавать лабу, а он ничего не знает.
Студенты с лабами и вопросами по синтаксису идут на хуй, так написано в шапке.

С первым всё гораздо интереснее.
Не буду перетирать его косточки, скажу только что не мир крутится вокруг программиста, а программист крутится вокруг заказчика с его боевыми задачами, за которые он готов платить программисту, и это заказчик задает вводные (в том числе выбирает ОС), а не программист.
Нежелание программиста писать кроссплатформенные программы я считаю некомпетенцией, а "заказчик идет на хуй ставить нормальную ось" - попыткой прикрыть свою некомпетенцию снобизмом. Когда софт, за который заказчик тебе заплатил чтобы тот работал, не будет работать - на хуй пойдешь ты, а не заказчик.

Ответы248502485824871

9 июля, 02:14 560 1224850

>>1224782
> Нежелание программиста писать кроссплатформенные программы я считаю некомпетенцией, а "заказчик идет на хуй ставить нормальную ось
Хорошо, а нужно ли поддерживать всякое устаревшее дерьмо как винда 7?

Ответы2485424908

9 июля, 02:21 561 1224854

>>1224850
А чего в ней устаревшего? Лучше бы windows xp в пример привёл. Там даже нормальных примитивов для мультипоточности нету, приходится всё через медленные костыли делать.

9 июля, 02:30 562 1224858

>>1224782
> Начну со второго. Этот >>1224155 товарищ еще не выучил основы языка (самые-самые основы), а бросается задавать вопросы по некоей задаче.
Какие я должен выучить основы? Я прочитал несколько книг, и это по твоему незнание основ?

Ответы24908

9 июля, 03:41 563 1224871

>>1224782
>Этот >>1224155 товарищ еще не выучил основы языка (самые-самые основы)
Расскажи, что же это за "основы"? Ох, и не дай бог ты сейчас начнешь залечивать мне про конструкцию switch case (ну, ты в глаза ебешься когда читаешь сообщения - это нормально).

А потом может быть объяснишь как организовать в коде разветвленное дерево вариантов событий? Классический способ организовать код в маленькие, но тем не менее смысловые методы я уже привел, что ты можешь предложить?

Ответы24908

9 июля, 08:54 564 1224908

>>1224850
У тебя может быть какое угодно мнение о том что устаревшее, а что нет. Если большинству заказчиков необходим софт под винду 7, значит ты будешь писать софт под винду 7, тем более это не rocket science.

>>1224858
Листать оглавление != читать. Как ты мог прочитать несколько книг по плюсам и не знать что такое switch, вообще не сталкиваться? Такие ошибки характерны для вкатывальщиков и студентов, я уже говорил. Скорее всего ты не читал никаких книг и пытаешься меня обмануть.

>>1224871
Причем тут твои "смысловые методы"? Тебе нужно как-то выбирать между ними, это не связанные вопросы. Вопрос был не в том как "организовать код в методы", а в том как передать управление нужному блоку кода из десятка имеющихся, для этого в общем нужен switch-case, что непонятно?

Ответы2510325181

9 июля, 16:35 565 1225103

>>1224908
>Вопрос был не в том, а в том как передать управление нужному блоку кода
Ааа. Да, перечитал свой вопрос, он и правда был некорректен.
Идея изначально была в том, что есть древовидная структура с одним началом и множеством концов и дохерища ветвей. Вопрос был как организовать компактно и красиво процесс прохождения этого дерева от корня к вершине при том, что в зависимости от различных внешних обстоятельств некоторые пути могут оказаться закрытыми, а другие наоборот открытыми.

Но да, вопрос был задан плохо. Каюсь.

Ответы25107

9 июля, 16:38 566 1225107

>>1225103
Поэтому меня и удивил ответ про switch-case. В данной ситуации он дает тот же результат, что и if else - слишком громоздко. Легко запутаться.

9 июля, 19:42 567 1225181

>>1224908
> Скорее всего ты не читал никаких книг и пытаешься меня обмануть.
Мимо другой анон, дай пару советов начинающим, как нормально читать книги?

Ответы25247

9 июля, 21:16 568 1225247

>>1225181
Вот у меня есть всего один совет, но очень, ОЧЕНЬ важный.
Правильно читать книги так - после каждого нового описанного в книге синтаксического / алгоритмического / архитектурного средства открывать среду и реализовывать его, а после каждого пятого - все предыдущие пять.
Книги с задачами Праты для этого очень хороши, называются "Язык программирования С (C++), лекции и упражнения".

Ответы25258

9 июля, 21:29 569 1225258

>>1225247
Забыл сказать, это годится только для начинающего, вкатывальщика, чтобы голова побыстрее на место встала. Каждая новая книга будет сообщать все меньше собственно нового, и можно будет читать по диагонали.
При этом все равно проверяя себя задачами, потому что они и тренируют голову (то, что называется в быту "алгоритмы"), и тренируют руки (умение шлепать код по четкому описанию) и дают оценку своего уровня, которая в большинстве случаев неприятно удивляет.
Я не берусь судить о том, сколько времени нужно провести в таком режиме, но когда ты можешь решить некую задачу, охватывающую всё что ты прошёл, и сделать это быстро, не отвлекаясь на медитацию - значит ты всё усвоил. Соответственно для C++ по Прате: нашлепал добавление-удаление-редактирование-поиск-запись-в-файл-чтение-из-файла на плюсах (корректное, не вылетающее и без ошибок), не напроектировав херню в классах, не получив ругань valgrind - вроде освоил. Повторил все то же самое через неделю - ну да, точно освоил. Пора двигаться дальше.

61 Кб, 1463x787
TAG 13 июля, 01:41 570 1227036

Доброго вечера аноны, столкнулся с такой проблемой при создании двумерного динамического массива. Учусь в MVS 2013.
часть кода в котором ошибка вы видите ниже.
описание ошибок видна на пик. Помогите кто может.
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int row=0;
int col=0;
cin >> row;
cin >> col;

int arr = new int *[row];
for (int i = 0; i < row; i++)
{
int arr = new int[col];
}

Ответы27042

TAG 13 июля, 01:47 571 1227042

>>1227036
я нешел свою ошибку, извините за нуботреды)

Тред утонул или удален.
Это копия, сохраненная 28 августа 2018 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки

/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.gq, m2ch.cf, m2ch.fapp.in, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion