- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
bool Object::DeleteDouble(void* data)
{
Element* rc = Head;
BANKCLIENT* asd = (BANKCLIENT*)rc->Data;
int dbl;
Element* rc1 = Head;
BANKCLIENT* asd1 = (BANKCLIENT*)rc1->Data;
while ((rc != NULL) && (rc->Data != data))
{
asd = (BANKCLIENT*)rc->Data;
dbl = asd->NumScore;
while ((rc1 != NULL) && (rc1->Data != data))
{
asd1 = (BANKCLIENT*)rc1->Data;
if (dbl == asd1->NumScore)
{
std::cout << "Дублирующийся элемент удалён" << std::endl;
Delete(rc1);
goto flag;
}
}
}
flag:
system("pause");
return rc;
}
Некая svetlana.kotik раскрывает секреты односвязных списков.
>> system("pause");
:))))))
очевидно. матёрые профессионалы пишут `getchar();`.
Может тебе free(nullptr) на могиле выгравировать?
Я вот что-то не врубаюсь, нахуя зачем это оставили в крестах?
Или, более глобально, нафига делать кресты обратно совместимыми с сишечкой?
Как-бы если нужен пирфоманс и байтоёбство - идём насишечку, благо её стандарт тоже развивается (C11), а если нужен высокий уровень, ООП, все дела - нахуя ебать байты malloc'ами?
А уж компилировать проекты на С конпелятором С++ - это явное извращение.
Потому что изначально кресты паразитировали на сишке. А потом уже столько гибридного c/c++ софта понаписали, что совместимость пришлось оставить навсегда.
Это ж тебе не питон, чтобы всего за 10 лет почти перейти на новую, расово чистую версию.
https://docs.python.org/3/library/typing.html
блин, ты и пистона своего не знаш
> Как-бы если нужен пирфоманс и байтоёбство - идём насишечку
У меня всегда бомбит от этого тезиса. Насишечку идут, когда нужны сегфолты и буфероверфлоу. А перфоманс и байтоебство можно и в плюсах, не отказывая себе в прелестях RAII, ооп и прочих абстракций.
А другие осилили. Например написавшие ту ОС, под управлением которой ты сейчас пишешь эту чушь
Эко у тебя бомбануло от посягательства на свитую сишечку, что ты аж диагнозы мне начал ставить.
https://www.youtube.com/watch?v=ImXeMoKBAHs
прямо как в той истории про молдаван, бордель и 10 баксов
а я про программирование
Абстрактная функция close может закрыть все что угодно, даже argc и errno.
Вот, кстати, когда пишут про жс, почему-то ругают язык. А как про сишку - так программистов.
Почему так, если в сущности здесь только два языка, каждый из которых позволяет легко написать чушь, из-за которой программу можно сразу выбрасывать? Потому, что сишка десятилетия была в ходу как практически безальтернативный язык для запиливания царского пирфоманса, а жс молодой.
У тебя бомбит видимо от того, что ты не осилил писать на жавоскрипте без андефайндов и падающих при ошибке http-запросов.
А другие осилили. Например написавшие тот сайт, под управлением которого ты сейчас пишешь эту чушь
Да нет там ничего сложного. Там просто нужны самоконтроль и сила воли, прокачанные до 99 уровня. Или ревьювер с кнутом. Иначе рано или поздно срываешься в хаки и преждевременную оптимизацию ;(
З.Ы. Поэтому я больше люблю кресты с их няшными RAII и шаблонами. Рутины поменьше.
Не существует способа написать хороший код на сях. А на жс существует, хотя и сложный. На жс можно эмулировать модули, а на сишке нет
п.с. я даже сам не знаю, серьезно я или стоило выделить зеленым.
А вы говорите, драйвера на жс...
P.S. Да, ещё в "аналоге ардуино" по дефолту наличествует питон(второй), перл и gcc. Да, прямо на борту у embedded-девайса.
@guesto, научите ещё авторов OpenSSL писать без бафероверфлоу, реально достали.
И да, сишный qsort работает примерно в 2 раза медленнее std::sort. Абсракции виноваты, наверное.
Вот-вот. Другие пишут на всяких шарпах и жавах - и ничего, обходятся как-то без необходимости срать напрямую в память. А как кресты - так без ебли с сырыми указателями уже никак.
> обычный десктопный проект
> может не хватит перфоманса стандартных крестовых средств
Речь же шла о перфомансе стандартных джава/шарп средств? В моей предметной области достаточно много узких мест
Изначально, речь шла о " В 98% участков кода перфоманса на любую чушь хватит. Зато кое где надо прям побайтоёбить", т.е. о крестах. Я и привёл пример - куча программ, даже написанных на джаве/шарпе (объективно более медленных, чем кресты, за счёт оверхеда VM), вполне работают безо всякого байтоёбства и сырых указателей.
> В моей предметной области достаточно много узких мест
Прямо НАСТОЛЬКО узких, что не хватает крестовых STL/Boost, нужно ебать память напрямую?
... битовыми полями. Да, приходится
Ну и, к тому же, очень часто битовые поля - признак плохой архитектуры и попытке сэкономить пару байт на спичках.
Часто тебе для десктопного проекта нужны данные ядра и свой сетевой протокол?
Ну и да, для передачи данных по сети обычно используют JSON/Protobuf (если нет нужды в крайне высокой производительности - вроде игр и прочего), а ядро и драйверы - слишком специфичная область, с которой я и не знаком толком.
В вашем представлении "обычный десктопный проект" это не игра, не инженерный софт, не математический софт, не производственный софт. Что же это? Какая-то абстрактная бесполезная хуита утилита
Типичный вывод сишкопрограммы. (в данном случае: Connectathon - популярный инструмент для тестирования NFS).
Зачем мне нужен unsigned? У меня нет времени, чтобы ебаться с ним!
По моему представлению, в производственном софте главное - всё же надёжность. А байтоёбство и прямая работа с памятью надёжности не прибавляет.
> математический софт
Вот здесь производительность как-раз может быть боттлнеком. Однако, вы часто пишете математический софт, когда есть Wolfram/MathCAD/etc?
> инженерный софт
Какой именно? САПРы?
> игра
Здесь байтоёбинг может быть уместен, хотя и не всегда нужен.
> NMEA кодирует сообщения AIS (VDM) побитово
Эээ... "NMEA 0183 is a combined electrical and data specification for communication between marine electronics such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments." - мы о десктопе говорим, или уже переместились в мир микроэлектроники? Если переместились - я, пожалуй, покину дискуссию, ибо знанями о морском оборудовании и GPS приёмниках не обладаю.
> scoped_exit
> unique_ptr
Ну а вот это как раз не в тему. Там не надо освобождать ресурсы. Там надо просто прервать 2 цикла и продолжить код под ними, причём не по ошибке (поэтому исключение кидать не вариант).
Штука редкая, в типичном хуяк-хуяк-в-продакшен (где большинство циклов красиво заменяется на всякие find'ы) не встречается.
-- а-а-а-а, кто-то где-то использует goto
-- срочно замените его на throw/catch!
или на лямбду!
"Now, that's a name I've not heard in a long time."