Этого треда уже нет.
Это копия, сохраненная 7 июля 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
75 Кб, 400x400
C++ #52 #993446 В конец треда | Веб
Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/

Прошлый >>979476 (OP)

Теги: кресты, cpp
#2 #993469
Я тут читал гайд по правильному оформлению кода, да и от других подобное слышал то что строки более чем из 80 символов следует переносить на новую строку. Стоит ли это делать? И что если у меня блоки кода только уходят на 40 символов? Как тогда переносить код?
#3 #993481
>>993469
Твоё только в /dev/null переносить.
993485
#4 #993485
>>993481
Твой мозг уже там
#5 #993489
#6 #993512
>>993469
В фирмах, где макакам выдают мониторы моложе 2002 года, и которые больше 19" в диагональ, обычно строку делают в 120 символов. Но, можешь не волноваться, тебя даже в самый закудышный бодишоп не возьмут.
#8 #993595
Ононы, как в визуалке 2010 года можно сделать чтобы по нажатию на button отредактировало в определенных местах готовый word документ?
Добавил СОМ-ссылку Microsoft Office 14.0 Object Library и Microsoft Word 14.0 Object Library, ничего не выходит.
Пробовал делать по учебнику MS Visual C++ 2010 в среде .NET. Нихуя не вышло. Шляпа срочно нужна для диплома, но в С++ я ни в зуб ногой.
993609993628
#9 #993609
>>993595
OLE Automation
993617
#10 #993614
Почему не получается функцией WriteConsoleOutbutA вывести символы псевдографики?
Вместо этого выводит знаки вопроса или какую-то мишуру, в зависимости от шрифта. В то время как тот же набор данных выводится обычным cout безупречно, да и другие символы вроде латинских букв выводятся WriteConsoleOutbutA как надо. В чем проблема?
70 Кб, 673x483
#11 #993617
>>993609
Нету такого.
993624
#12 #993618
>>993614

>Вместо этого выводит пробелы, знаки вопроса или какую-то мишуру, в зависимости от шрифта.

#13 #993624
>>993617
В COM-компонентах.
993637
#14 #993628
>>993595
Вообще на крестах это писать - ад, лучше всего на c# бахнуть или js+activex.
Вот по шарпу мануал
https://support.microsoft.com/en-us/help/316384/how-to-automate-microsoft-word-to-create-a-new-document-by-using-visual-c
993637
#15 #993633
>>993614
Опять эти спермоклоуны со своей командной строкой из 1992 года
993645
#16 #993637
>>993624
Одновременно чекал. Там тоже нету.

>>993628
Дак сказали эту хуйню на ЗИБЛЮЗБЛЮЗ писать. Был бы выбор - писал на своем питоне или шарпе.
993724993726
#17 #993645
>>993633
Сказал прыщеклован, у которого и в 2017 ничего, кроме командной строки, толком и нет.
993754
3 Кб, 121x162
#18 #993663
>>993614
Это какой-то пиздец, господа. Переключил я шрифт сосноли с точечного на lucida - пробелы превратились в вопросики. Запустил программу еще раз - теперь все нормально отпечатано, в lucida. Поменял шрифт на точечный, точно такой же, какой был изначально - и теперь символы выглядят нормально и на изначальном шрифте. Запустил программу в третий раз - и теперь все символы отображаются на изначальном шрифте без переключения шрифта. Что это за хуйня? Как это работает? Как мне создать приложение, которое, например, выводит cp437 на дефолтном шрифте с любого компьютера без ебатни со шрифтами, бесплатно без формочек и юникода?
#19 #993665
>>993663
Ах тыж блять, запустил программу в четвертый раз, и снова вместо символов пробелы. Что за ебаный пиздец?
993666
#20 #993666
>>993665
Нашел новую деталь: эти символы отображаются как пробелы только в точечном шрифте 8х12. Вернее, не все, а все, кроме вот этого: . Поэтому в моей коробке всегда рисуется только верхний правый угол.
Так вот, в точечном шрифте 7х12 все символы отображаются как , кроме того самого уголочка, который стойко держится в верхнем правом углу. При чем они не только превращаются в треугольники при переключении шрифта, но и остаются такими при перезапуске программы.
5x12 - аналогично.
8x9 - снова пробелы.
6х9 - то ли снова треугольники, то ли запятые какие-то, мелко, плохо видно. Угол на месте.
16x8 - пробелы.
4х6 - походу, треугольники, мелко пиздец.
16х12 - пробелы.
12х16 - ну вот тут уже точно апострофы или запятые развернутые.
10x18 - треугольники.

Продолжаю зоонаблюдения и запрашиваю помощи.
993667
#21 #993667
>>993666
Пиздец, макаба не пускает символы. Короче, угол который отображается - в таблице https://en.wikipedia.org/wiki/Code_page_437 под номером 187. Треугольник - 31.
#22 #993668
>>993663
Нахуя тебе все это сдалось?! Сделай, если уже так надо, свою псевдо-консоль на гуе, если ты там какой-то рогалик пилишь или что. На винде командная строка КОНЧЕНАЯ, это тебе не zsh или bash хотя бы.
993671993756
#23 #993670
Еще одно зоонаблюдение: если ставить цп сосноли через SetConsoleOutputCP или system("chcp 437") (не имеет значения) - то символы перестают отображаться даже при cout. Если убрать это и оставить дефолтную 866, то символы отображаются через cout безупречно.
#24 #993671
>>993668
Есть какой-нибудь гайд, как так сделать? Был бы премного благодарен.
#25 #993683
Здравствуйте, не подскажите какой-нибдуь ресурс по созданию GUI приложений на QT либо на VS. Буду очень благодарен!
993700994803
#26 #993700
>>993683

> не подскажите какой-нибдуь ресурс по созданию GUI приложений на QT


doc.qt.io
994803
#27 #993724
>>993637
Ну вот просмотри. Можёт что наковыряешь.
https://code.msdn.microsoft.com/office/CppAutomateWord-28938be1
993795
#29 #993732
>>993671
Гайд хз, но думаю чувак предлагает через winapi создавать окно, сделать его черным, и имитировать командную строку окном с текстовым полем внутри главного окна шириной в всё окно и высотой с 1 символ
#30 #993735
>>993469
Строки должны быть такие, чтобы при их чтении целевой аудитории не приходилось водить горизонтальный скролл туда-сюда. Из этого выходит:
Если ты пишешь говнокод в стол - длина любая.
Если ты в закрытой конторе, и у всех стоят одинаковые мониторы, и никто не пользуется разделением окон - тогда на всю ширину ваших мониторов.
Ширина в 80 символов была придумана хуилион лет назад, когда нужно было выбрать минимально читаемый размер символов для консольных терминалов. Собственно, это просто стандарт, который актуален, если иное не указано.
Лучше, если чтение кода даже не будет заставлять двигать глаза по горизонтали.

В любом случае, правила написания кода нужны для того, чтобы код удобно было читать.
#31 #993754
>>993645
Спермодебилу НИБАМБИТ
#32 #993755
>>993614
>>993663
Спермодебилы, обсуждайте WinAPI и спермопроблемы проблемы в /s/
#33 #993756
>>993668

> На винде командная строка КОНЧЕНАЯ


Говорят, с полгода назад она начала поддерживать управляющие ASCII-коды. Всего-то 40 лет прошло с момента принятия стандарта.
#34 #993757
>>993671
Я бы ради прикола завел все на OpenGL, но еботы с этим, конечно же, прибавится, хотя, в целом, ничего сложного быть не должно. Плюс опыта в корзину (научишься шрифты рендерить и рисовать полигоны текстурированные).
Я бы, может, такой хуйней сам занялся. Да лень пиздец. Пойду лучше посру.
#35 #993759
Как можно замерить время выполнения функции?
993762
#38 #993781
>>993671
Если у тебя десяточка, включай WSL и наслаждайся рабочей консолью и соответствующим стандарту компилятором.
40 Кб, 683x390
--- #39 #993793
С помощью каких алгоритмов это можно реализовать? Зачет горит.
#40 #993795
>>993724
>>993726
Скачал какую-то библиотечку. Нихуя не понял. Не осилил.
#41 #993796
>>993793
Это матан
Какие нахуй алгоритмы?
993798
#42 #993798
>>993796
Это линал
Какой нахуй матан?
993863
#43 #993799
>>993793
google -> line segment intersection
#44 #993802
>>993793
мне в свое время сильно помог этот ответ: http://stackoverflow.com/a/565282
#45 #993810
В заочном тестовом задании мне надо было разработать класс. В ТЗ были указаны конструктор по умолчанию, конструктор копирования и деструктор. Чтобы соблюсти правило трех, я добавил еще оператор присваивания (было разрешено добавлять свой функционал). Стоит ли еще добавить конструктор перемещения и оператор присваивания при перемещении для правила пяти, если меня об этом не просили?
#46 #993812
>>993810

> Стоит ли еще добавить конструктор перемещения и оператор присваивания при перемещении


Вряд ли они знают, что это такое.
#47 #993813
>>993810
Конечно стоит, иначе не пройдёшь тест.
директор-той-конторы
#48 #993814
>>993810
Правило пяти нужно для того, чтобы вспоминать о нем, когда класс становится реально сложным.
В твоем примере ты можешь их добавить, чтобы показать что ты о нем знаешь. А так, если бы ты делал это для себя, то не надо.
#49 #993831
Как узнать количество определенного символа в одной строке?
993832
#51 #993836
>>993810

>> В заочном тестовом задании мне надо было разработать класс


>> было разрешено добавлять свой функционал


Охуеть задачи, одна охуительнее другой.
#52 #993842
Как вы парсите строки?
Хочу читать OBJ файлы, у которых обычно они имеют вид: <тип данных> <данные>
Пока есть идея завести словарь из строковых литералов типов и лямбд для разбора данных.
Получился вот такой пиздец https://pastebin.com/NQvtWifE
Есть идеи получше?
993865
#53 #993863
>>993798
Это аналгеом какой линал?
#54 #993865
>>993842
С таким же успехом можешь использовать указатели на функции, которые можешь разместить в анонимном пространстве имен, вместо того, чтобы использовать функциональные объекты (хотя, расходы будут небольшие, если лямбды помещяются в кусочек выделенной памяти функциональным объектом, однако здесь это не то место, где нужно искать оптимизации).

Наверно, вместо этой тягомотины, что ты написал, проще было бы получать данные через sscanf если уж в c код полез.
993923
#55 #993866
>>993793
Пиздец какой-то, какие-то наложения, числа, перечения. В выводе вообще цифры какие-то, нихуя не понял. Чему вас там учат?
993895
130 Кб, 1073x420
188 Кб, 684x667
#56 #993894
блядь, что не так то?
994114
#57 #993895
>>993866

>Чему вас там учат?


Это называется утилизацiя человечишков. Чтобы не мешались под ногами у номенклатурных сынков и дедков со связями в ЦК КПСС.
#58 #993917
Нужен ли деструктор в собственном итераторе?
#59 #993922

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


Несколько неправда.
#60 #993923
>>993865

>если уж в c код полез


Где, например?
Мне наоборот хочется в стиле плюсов делать, только что-то не понимаю что это значит.
993925
#61 #993925
>>993923
Да хоть те же регекспы.
#62 #993926
Если я напишу

typedef unsigned int zalupa;

То zalupa будет читаться как "unsigned int"?
993927
#63 #993927
>>993926
да. Но вообще, сейчас уже не 1999 год, по-этому
using zalupa = unsigned int;
993928
#64 #993928
>>993927

Здорово! Спасибо.
#65 #993935
Как на последний Visual Studio установить этот самый сишарп?
У меня уже дикий бугурт, ничего непонятно.
993938993939993942
#66 #993938
>>993935
Visual Studio 2015 Community, всё есть там из коробки. Проследуйте к шарпоёбам за деталями.
993939
#67 #993939
>>993935
>>993938
Орнул с даунов

Вызовите мастера-программиста на дом и он вам за пятихаточку всё сделает
#68 #993942
>>993935
Ай блджад, тредом промахнулся, сорри
#69 #993984
Создаю объект:
``
angle = new ModelAngle();
fprintf(stderr, "angle = %X\n", angle);
``

В его конструкторе:
``
ModelAngle::ModelAngle()
{
fprintf(stderr, "ModelAngle = %X\n", this);
}
``

И что ж я вижу?
``
ModelAngle = 1F31160
angle = 1F31180

``

Ну и при удалении:
``
Error in `./a.out': double free or corruption (out): 0x0000000001f31180
``

Почему адреса не совпадают?
#69 #993984
Создаю объект:
``
angle = new ModelAngle();
fprintf(stderr, "angle = %X\n", angle);
``

В его конструкторе:
``
ModelAngle::ModelAngle()
{
fprintf(stderr, "ModelAngle = %X\n", this);
}
``

И что ж я вижу?
``
ModelAngle = 1F31160
angle = 1F31180

``

Ну и при удалении:
``
Error in `./a.out': double free or corruption (out): 0x0000000001f31180
``

Почему адреса не совпадают?
993985
#70 #993985
>>993984
Братишка, жахни через ideone.
993999
#72 #994004
>>993999
Ну тут на 8 байт отличается, а не на 32, но всё равно отличается.
Я где-то с наследованием накосячил?
#73 #994007
>>993999
Да, в моём коде у базового класса полей на 24 байта. Вот и разница на 32 байта.
Это же 8 байт - длина указателя vtbl? Или чего? Почему так?
994018
#74 #994018
>>994007
http://stackoverflow.com/questions/22256620/why-pointers-to-the-same-object-have-different-values

По поводу падения программы: на Angle нужен виртуальный деструктор.
994061994097994115
#75 #994061
>>994018
А ведь ты прав.
https://ideone.com/VuJKVb
#76 #994094
Анон, есть пера вопросов.

Если член класа это вектор. Нужно ли его руками очищать в деструкторе?

И второй вопрос. Есть класс, который содержит некоторые поля и другой объект.

class A {
private:
int x;
B b;
}

Как объект B может получить доуступк х?
994098994100
#77 #994097
>>994018
Хм, и правда. Но адреса всё равно не совпадают.
То есть указатель на Angle на 8 байт (vtbl?) отличается от указателя.
То есть, указатель на Angle в принципе не должен знать, что этот Angle является ещё и ModelDevice?

И таки да, если изменить порядок наследования, адреса совпадают.
#78 #994098
>>994094
Передаешь в класс B указатель на класс A. Объявляешь хоть где в декларации класса дружественный класс, то есть friend class B; Тогда B будет иметь доступ КО ВСЕМ членам класса А.
994106
#79 #994100
>>994094

>Если член класа это вектор. Нужно ли его руками очищать в деструкторе?


Не нужно. Деструктор вектора сам удалит своё содержимое. Другое дело, если вектор хранит указатели на объекты в куче, которые ты создавал через new. Тогда да, их надо удалять самому.

>Как объект B может получить доуступк х?


Лолникак. Объявить friend class B внутри A. Только по-моему это говорит о том, что ты что-то делаешь неправильно.
994106
#80 #994106
>>994100
>>994098
Спасибо.

>Только по-моему это говорит о том, что ты что-то делаешь неправильно.


Вероятней всего.
У меня следующая проблема. Есть вектор с объектами и все эти объекты должны использовать несоклько общих переменных. Сделать через глобальные переменные - некрасиво. А как правильно?
994220
#81 #994109
>>993999
Probeloblyad is not a men.
#82 #994114
>>993894
Добавь boost_system в линкер
#83 #994115
>>994018
Во, и если сделать
delete(dynamic_cast<ModelAngle*>(angle));
то тоже всё работает.
7 Кб, 505x385
#84 #994140
Господа, прошу, я заебался. Ну не понимаю я что происходит.

Фишка в чём? У меня программа... работает. Но она не работает под убунтой и вообще на университетских компьютерах. Не работает и в IDEONE (ну, там тоже gcc++).
Я даже почти уверен, что я действительно не прав и то, что программа работает у меня и одногруппников - заслуга, скорее, компилятора, чем моя. Прошу, помогите.
Правильный вывод - на пике.

Текст программы (ну, последнее изменение):
pastebin.com/Ys6u2W9b

Ошибки в IDEONE
Прошлая версия: http://ideone.com/FwMMBa
Последняя версия: http://ideone.com/zdkbHQ
994158994188994190
#85 #994146
Инициализация переменной – это?
1 Каждое присвоение ей значения
2 Последнее использование переменной
3 Объявление переменной
4 Первое присвоение ей значения
994153994156
#86 #994153
>>994146
3 и 4 одновременно.
#87 #994156
#88 #994158
>>994140
В рализации функции которая начинатеся с 15 строки нет возвращаемого значения, тогда как сигнатура требует. Получается UB (скорее всего все кончается разименованием нулевого указателя) поэтому результаты в разных компиляторах разные. Тот в котором работает (скорее всего) отпимизирует код выбросив нахуй код с UB (хитрожопые оптимизирующие компиляторы такое любят), потому и кажеться что "работает". Если интересно можешь изменить 392 строку на что-то типа cout << endl << a << endl << "TEST" << endl; и запустить на компиляторе на котором "работало" чтобы посмотреть как работает теперь.
994159994175
#89 #994159
>>994158
Почему она вообще скомпилировалась? Всегда же ругается, если не выводится ничего.
994168994170994175
20 Кб, 1067x343
#90 #994167
Зочем писать произвольный блок кода не связанный ни с каким оператором в фигурных скобках?
994172994173
#91 #994168
>>994159
Предупреждения зависят от ключей. Почти что самые параноидальные - -Wall -pedantic для gcc.
#92 #994170
>>994159
Всегда ругался скорее всего статический анализатор твоей IDE. А комплятору похуй. В gcc вроде можно ворнинг включить. Ну и в main стандарт разрешает не писать return - должно добавляться return 0.
#93 #994172
>>994167
Чтобы переменные разрушались, и освобождалось место и другие ресурсы, связанные с переменными (мьютексы, например).
994174
#94 #994173
>>994167
Чтобы ограничить видимость переменной dos_header или чтобы переменная dos_header уничтожилась сразу а не в самом конце выполнения функции (внешнего блока кода).
994174
#95 #994174
>>994172
>>994173
А, типа скоуп такой неявный? Спасибо.
994184994187
#96 #994175
>>994158
>>994159

Окей, допустим. Но умножение-то всё равно не правильно работает (в последней версии), а если брать старую, то там всё равно ошибка двойного освобождения памяти. И у меня, хех, всё ещё работает
http://ideone.com/v6ClEO
994177
#97 #994177
>>994175
*неправильно
А сылка на старую-исправленную
#98 #994184
>>994174
В нём нет ничего неявного. Фигурные скобки - это блок кода (statement по стандарту, ЕМНИП), а не часть while-if-чототам. while и for могут быть вообще без фигурных скобок.
#99 #994187
>>994174
Это скоуп явный.
#100 #994188
>>994140

> Фишка в чём? У меня программа... работает.


Хуй с два. Компилируется ≠ работает.

>pastebin.com/Ys6u2W9b


Ну полюбуйся на отчёт valgrind-а для твоей "работающей" программы. Куча use after free.
http://paste.ubuntu.com/24616911/
994194
#101 #994190
>>994140

>я заебался. Ну не понимаю я что происходит.


Для этого придумали valgrind.
994194
#102 #994194
>>994190
>>994188

Ну, она выдаёт тот результат который нужен - значит работает. Просто не везде и через жопу.

>valgrind


Я даже не знаю, что это. Погуглю.

>use after free.


Ну, это довольно очевидно учитывая ошибки двойного осовбождения в другом компиляторе. Делать-то что? Я не понимаю что я делаю не так. Возможно, потому, что я мыслю категориями языков в которых нет ебучих указателей и ссылок. И где можно спавнить объекты по КД, возвращать объекты(ссылки) на объекты созданные внутри функций и так далее, а они сами уж когда нибудь, когда станут ненужны, исчезнут.
И я всё ранво не понимаю, что происходит :(
994200994202
#103 #994200
>>994194

> Делать-то что?


Непонятно, зачем в Vector::copy ты выделяешь/освобождаешь память. Судя по логике работы Vector::operator=, copy должна просто копировать из другого массива.
Подумай над этим.
994202994203
#104 #994202
>>994194
>>994200
Переделал твой copy к такому виду:
void copy(int *v) {
for (int i = 0; i<this->n; i++) {
this->v = v;
}
}
Результат налицо: http://paste.ubuntu.com/24616978/
994206994207994216
#105 #994203
>>994200
cpp.sh/4fybt

А тут работает. Только с рандомом что-то не так.

>в Vector::copy


Я его вообще сотру если надо. Он был нужен для того куска который уже переписан иначе.
2 Кб, 448x92
#106 #994206
>>994202
Макака потёрла индексацию
994287
#107 #994207
>>994202
хм. Когда-то он выглядел именно так. Но, видимо, была другая ошибка и всё равно ничего не работало. А сейчас она исправлена. Спасибо.
Хотя я всё равно не совсем понимаю. C не может хранить объекты? Он удаляет их сразу после завершения функции? Или что?
994208
#108 #994208
>>994207
Ты их удаляешь когда не надо.
994209
#109 #994209
>>994208
Я где-то явно писал удаление? о.О
#110 #994216
>>994202
http://codepad.org/hHhWINzD
IDEONE, кажется, лихорадит, Я попробовал запустить здесь с исправленным copy.
Опять ошибается, там где переопределённое умножение (ну, и, соответственно, те же проблемы будут со сложением и прочим. Понять бы что не так и я исправлю их все)
994222
#111 #994220
>>994106
Ну передай указатель на структуру с этими переменными или на каждую переменную, по желанию, в конструктор или через сеттер. И все дела.
#112 #994222
>>994216

>Опять ошибается


Скомпилировал с -O3
http://paste.ubuntu.com/24617060/
994227994230
#113 #994227
>>994222
Единственное, что я могу понять так это то, что в твоём компилировании он всё же запихивает правельные значения (64-8-8-4), в отличии от codepad, у которого там уже лежит стрёмная хрень. Но это и всё.
#114 #994230
>>994222
http://codepad.org/TwwiR44r
Я вижу ошибки связанные с ostream. Но всё, что я могу придумать - это сделать вот так. И это не поможет с остальным
9 Кб, 851x271
#115 #994231
Вообще шикарный код.
@return Ничего не возвращает
В конце стоит return, который возвращает.
В начале офигенно сделана проверка на присваивание самому себе. Через оператор ==. Ну, в принципе, сравнивать адрес this с адресом аргумента бессмысленно, т.к. последний передаётся по значению, а не по ссылке.

У Страуструпа, кажется, была имплементация вектора в книге. Почитай, что ли.

Складывается впечатление что тут проще переписать с нуля.

P.S. и принято исключения наследовать от подходящего исключения из стандартной библиотеки и переопределять функцию what(), а не operator<< для исключения.
994240
#116 #994238
Можете рассказать о подводных камнях использования std::ofstream?
1. Нужно ли вызывать flush() после каждой записи, зачем он вообще нужен?
2. Что нужно проверять, чтоб понять, что операция прошла успешно? Всякие там good()/bad()?
3. Вообще std::ofstream еще актуален или уже устарел?
4. Позволяет ли он писать внахлёст в середину файла? 5. Чтобы вставить данные в середину файла нужно перезаписать первую половину в новый файл, добавить новые данные, и потом продолжать писать вторую половину?
994293
#117 #994240
>>994231

>@return Ничего не возвращает


>В конце стоит return, который возвращает.


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

>проверка на присваивание самому себе.


Это не она, хех. Это проверка, скорее, в духе "если у них одинаковая длина и каждое значение одинаково, то ничего присваивать и не нужно"

>P.S. и принято исключения наследовать от подходящего исключения из стандартной библиотеки и переопределять функцию what(), а не operator<< для исключения.



Про это как-то не натыкался, но спасибо, это я бы хотел сделать.

Переписать с нуля? Можно. А толку-то? У меня всё равно будут ошибки связанные с памятью. Потому, что я не понимаю, как работает память. Все эи задания с сололёрнов прохожу, но в итоге ничего не могу вынести. Мне бы сдать это и забыть про кресты, но... эх
994244
#118 #994244
>>994240

>Переписать с нуля? Можно. А толку-то? У меня всё равно будут ошибки связанные с памятью.


Переписать с нуля, глядя в Страуструпа. Чтоб была нормальная работа с памятью. А арифметические операции добавить можно за 10 минут.
994251994254
189 Кб, 800x533
#119 #994251
>>994244
Ну, он милый, конечно, но как это поможет мне получить решение?
А если речь про книгу, то не уверен, что я осилю это в столь сжатые сроки. Или там есть конкретно, хм, глава? Статья? в которой все проблемы решены?
994252994255994277
#120 #994252
>>994251

>Или там есть конкретно, хм, глава?


Я не знаю, я же не читал сам.
Но похоже, что 17-я и 18-я.
994277
#121 #994254
>>994244
ААААА!
http://codepad.org/7cEMqbmp
Ну тут-то что? Вроде и функций никаких нет трогающих память, а всё равно дрянь какая-то выходит.

При том матрицы, с которых я сегодня начал слизывать вектора, потому, что, очевидно, сам совсем бы проблемами не разобрался - работают прекрасно
http://codepad.org/Jlh479m0
994261994285994287
#123 #994258
>>994255
cпасибо, Иисус. А что ты изменил?
994259994269
#124 #994259
>>994258
На деструктор посмотри.
994262
#126 #994262
>>994259
но... блять. Как так-то?
Я думал "деструктор - функция которая вызывается в момент уничтожения объекта", которая нужна, собственно, чтоб очистить память. Разве не нужно там удалить эту штуку?

А если не нужно, то почему в деструкторе матриц (см. выше) это делается и всё работает?
994263994321
#127 #994263
>>994262
Он просто стебётся.

Впрочем, можешь выпилить все delete и жить спокойно.
994264
#128 #994264
>>994263
:(
Настолько не могу в C, что не понимаю даже шуток про C. Делать-то что?

И чем чревато если я, чисто случайно, действительно решу выпилить все делиты? Потерей памяти при каждом запуске?
994283994324
#129 #994269
>>994258
Мне кажется, тут move asignment оператор по умолчанию включается, поэтому всё сыпется.
Но я не смог чёт его добавить в этом редакторе каличном.
994270
#130 #994270
>>994269
Если у тебя явно реализован деструктор, move costructor и move assignment не будут сгенерированы.
#131 #994277
>>994251

>Или там есть конкретно, хм, глава?


>>994252
Можно прямо с 18-й начать, в 17-й вода для полных нубов.
994283
#132 #994280
>>993446 (OP)
потсоны помогите пжалста! Призываю всех топ программистов 10000килорублей/сек Короч есть 2стула 2 файла .cpp с основным говнокодом(класс + main) и .h заголовочный в котором прописана функция получения текущего времени... Как в .cpp файле в классе получить результат отработки файла-функции с временем?
994281
#133 #994281
>>994280

>Как в .cpp файле в классе получить результат отработки файла-функции с временем?


Вызови эту функцию.
994338
35 Кб, 379x337
#134 #994283
>>994277

>18-й начать


Выглядит не совсем так как мне представлялось. Это хоть та книга?

>>994264
Ещё разок обращу внимание на вопрос. И на "что делать", и на второй.
994288
#135 #994285
>>994254
Ну ты калич. Зачем с макабы код копируешь?
http://codepad.org/1eK6SvZt
#136 #994287
>>994254

>http://codepad.org/7cEMqbmp


Лол. Я же сказал, что макака похерила доступ по индексу в copy(). И скинул скрином >>994206
994289994292
#137 #994288
>>994283

>Выглядит не совсем так как мне представлялось. Это хоть та книга?


Идёшь по ссылке в ОП-посте и качаешь "Программирование. Принципы и практика использования C++"
994290
#138 #994289
>>994287
блё. Я подумал что ты про \t
#139 #994290
>>994288
действительно
#140 #994292
>>994287
всё. Работает. А теперь я пойду и всё же почитаю книжку. Потому, что про деструкторы я вообще ничего не понял (при их выпиле действительно всё налаживалось, но, как я понимаю, терялись те ячейки что эти векторы занимали).

Спасибо
#141 #994293
>>994238
1. Делать этого каждый раз не нужно, если есть необходимость записывать данные сразу, делай это после всех необходимых записей, то есть когда необходимые данные будут заполнены, потому что частые вызовы снизят производительность, если ты будешь пихать данные маленькими объемами.
2. Можно проверять, бывает всякое.
3. В стандарте никакой замены ему нету, и, в целом, эта хренотень не поддерживает бинарный формат данных, только текстовый, для сериализации, мягко говоря, годится едва ли, а на самом деле вообще бесполезна чуть менее, чем полностью
4. Все, что позволяют выполнять файловые операции ядра ОС, все это поток и может, так что ответ на твой вопрос - ДА, но только не в случае, если ты открыл файл на append, тогда вся запись будет производиться в конец файла, как бы ты не старался перемещать указатель записи.
5. Нихуя не понял. Ты делаешь ofstream::seekp, чтобы перейти в необходимое место, куда ты будешь записывать (указываешь направление и смещение) и потом проталкиваешь данные в поток. И все, в общем-то.
994300
#142 #994300
>>994293

>Нихуя не понял.


Имею в виду, если поток открыт с флагом std::out, то при записи он будет перезаписывать текущие данные файла. В таком случае, чтобы именно вставить, а не перезаписать данные, нужно считать в новый файл до необходимого места, потом вставить новые данные, а потом считать остальное?

И еще вопрос появился: в c++ завезли OpenFileDialog кроме как варианта с MSDN:
https://msdn.microsoft.com/en-us/library/bb776913(v=VS.85).aspx
994370
#143 #994320
Псаны, как правильно хранить set ссылок/указателей на объекты?
#144 #994321
>>994262
В 111 строке ты создаёшь временный объект, копируешь его и удаляешь память, указатель на которую остаётся в `a`.
Ты будешь наступать на те же грабли всегда, когда ты будешь копировать вектор. Чтобы этого не было, сделай конструктор копирования или конструктор перемещения.

Пока ты их не написал, они дефолтные - копируют значения слово в слово, включая указатели, новую память они не выделяют.

В твоём коде Vector не может копироваться и перемещаться, поэтому писать надо по-другому:
Vector a(n) - тут не создаётся временный объект.

В строке 206 тоже временный объект.
994325994328
#145 #994324
>>994264

>И чем чревато если я, чисто случайно, действительно решу выпилить все делиты? Потерей памяти при каждом запуске?


1) Да.
2) Кроме того, все копии созданного вектора будут использовать один и тот же указатель.
994328
#146 #994325
>>994321

>Сделай консруктор копирования



А это разве не он?
Vector(const Vector& vect) {...}
994332
#147 #994327
Как называется код который не разделён на интерфейс и реализацию?
994329
#148 #994328
>>994324
>>994321

http://codepad.org/XyP1fsQ9

Вроде тут, после того как тот анон исправил мою copy() нет ошибок. И делиты на своих местах. И, вроде, копирующий конструктор есть. А что там с "одним и тем же указателем" или временными объектами?
994334
#149 #994329
>>994327
говнокод?
#150 #994332
>>994325
Он. Тогда я нихера не понял: ты, вроде, правильно копируешь с выделением второго блока.
#151 #994334
>>994328
Не обращай внимание, я просто твой код не читал, просто тыкнул пальцем в небо.
#152 #994338
>>994281
а как ее в классе вызвать?
994390
#153 #994370
>>994300
Ну если каретка на начале файла, то да, он будет перезаписывать содержимое. Если ты хочешь стереть файл перед открытием, то используй опцию std::ios::trunc или как ее там. Если ты хочешь записывать поверх имеющихся данных, просто перемещаешь указатель записи при помощи seekp и все.
#155 #994417
Как дебажить статическую библиотеку? У меня есть приложение, которое использует здоровую либу, и в ней при выполнении срабатывает какое то говно. Как это дело отдебажить? Где ставить точки остановки?
994432
#156 #994432
>>994417
Отбой, нашёл.
#157 #994505
Двач, я что-то не понял, культя что-ли сама при уничтожении виджета не отсоединяет сигналы от лямбд?
994513994545
#158 #994513
>>994505
Наркоман чтоли?
994518994545
#159 #994518
>>994513
ньюфаг штоле
#160 #994545
>>994513
Всё, что я выгуглил это вот: https://wiki.qt.io/New_Signal_Slot_Syntax (раздел Disconnecting in Qt5)

> Only works if you connected with the symmetric call, with function pointers (Or you can also use 0 for wild card) In particular, does not work with static function, functors or lambda functions.



>>994505 кун
994711994747
#161 #994711
>>994545
Я немножко не понимаю твою проблему. Как ты решил, что соединение не рвётся? Как оно вообще может не рваться, если посылающий объект сдох? Точнее, кто посылает данные, если автор сдох?
994749
#162 #994743
Сап, плюсоводы. Как у вас с работой, удаленной работой, вкатыванием без профильной вышки (есть техническая из лютой шараги) и английским(которого я не знаю)? Есть ли смысл продолжать учить, если туповат (память плохая) или мне с плюсами ничего не светит и лучше не выебываться, а учить фронтенд?
994767994792
#163 #994744
Вместо одного char используют его массивы из-за того, что он только 8 бит хранить может?
994754
#164 #994747
>>994545
Нихуя не понял вопрос. char'ы используют для паддингов, нарпример, сетевые структуры в linux'е так задефаны. Если ты используешь char для хранения переменной, то, как правило, компилятор будет выделять под него 4 байта, чтобы выравнивать память для быстрой выборки.
994751994754994757
#165 #994749
>>994711
Нет, немного не правильно. Сдох объект со слотом, а объект, посылающий сигнал жив. В качестве слота выступала лямбда. Так вот после того, как объект сдох, этот слот всё равно вызывается. Сейчас я накидаю код.
А как решил, что соединение не рвётся? Прога падает
994753
#166 #994751
>>994747
Нихуя не понял. Нахуй ты мне про char'ы рассказываешь
#167 #994753
>>994749
Чтобы отсоединять сигнал при уничтожении объекта, в контексте которого работает лямбда, ты должен передать указатель на контекстный QObject в качестве третьего аргумента, а четвертым - лямбда функцию. И, в общем-то, все дела. Только смотри, чтобы время жизни захваченных объектов лямбда-функцией не истекло до смерти QObject. Короче, что-то вроде такого:

QWidget firstWidget;
QWodget secondWidget;
QObject::connect(&firstWidget, &QWidget::signal, &secondWidget, []() { lambda_call(); });
994758
#168 #994754
#169 #994757
>>994747

Я про те случаи, когда в char нужно хранить предложение.

Например, я щас балуюсь, и чар не принимает в себя больше одного символа.
994759994760
#170 #994758
>>994753
Блядь, действительно. В глаза ебусь, в доке всё написано. Спасибо, анон
#171 #994759
>>994757

Хм, если обьявить просто

char A;

То можешь сунуть туда только 1 символ, а если уже

char A[1];

То можно всунуть туда даже больше чем в мамку опа. я любя
#172 #994760
>>994757
char - это один символ одна буква. Если ты хочешь хранить много букв, но тебе нужен массив букв char'ов
В чём проблема то?
994761
#173 #994761
>>994760

Ну, я не знал немного.
#174 #994765
>>993663

>без формочек и юникода?


>2017


>без юникода


Прими мои соболезнования раз тебе приходится поддерживать легаси.
В ином случае это диагноз.
9 Кб, 301x596
#175 #994766
Призываю мастера Qt на помощь.
Есть очень странная проблема, в интернете нашёл только одну похожую проблему и то не решили.
Есть на форме textBrowser, в него пихаю текст и ссылки ака окно чата.
Ссылки так - ui->textBrowser->append("<a href="+url+">"+url+"</a>");
Обычный текст вот так - ui->textBrowser->append("me# " + message + "\n");

После открытия ссылки, тобиш после void Chat::on_textBrowser_anchorClicked - весь новый текст, который выводится в textBrowser - становится ссылками с юрл последнего нажатого.

Диплом горит, помогите господа.
#176 #994767
#177 #994792
>>994743
На удаленке очень много веб-макак, на крестах заебешься искать работу, притом, что быстро найдется хуеплет, который у тебя уведет ее.
Веб-макакой нати работу проще и ебаться про управление памятью, шаблонами и прочим говном не надо. Стоит лишь обмазаться фреймворками, однако, и в этой области свои особенности есть.

>>994766
Ты весь код покажи, тут борда с вангами или все еще со кольшиками, как-никак.
994793994796
#178 #994793
>>994792

>> школьниками


блеать!
#179 #994796
>>994792
От кода толку тут мало будет. Потому-что в textBrowser текст отправляется коректно и без ссылок. Сам ебаный textBrowser что-то с текстом делает внутри себя. У него там есть какой-то общий объект для ссылок? И сущность ссылки цепляется к тексту? Я хуй его.

https://pastebin.com/syxkiWNn
994812
#180 #994798
Как в VS компилировать код с минимальным размером кроме настроек пикрил?
Какие директивы компилятора нужно использовать, чтобы переменная в в PE-файле была в секции кода, а не инициализированных констант?
Можно ли встроить/переписать себе функции из WinAPI, чтобы не было привязки ко всяким Kernel32.dll, user32.dll, чтоб можно было просто вытащить секцию с кодом из исходного PE файла и вставить её целиком в другую и не ебаться с подгоном адресов функций, импортом и т.п.?
994799994806
38 Кб, 829x602
#181 #994799
>>994798
Пикрил, разумеется, забыл
#182 #994803
>>993683
>>993700
Кьют слишком специфичен и своеобразен. Есть ли что-то ориентированное непосредственно на винду?
Я могу прописывать обьявления окон для каждой кнопки, и даже готов писать свой фреймворк, но мне кажется что должно быть что-то несложное для винды типа эмбаркадеровского vcl или дотнетового фреймворка.
994804994831
#183 #994804
>>994803
Именно поэтому С++ для настолок - полное дно.
#184 #994805
>>994766
Очевидный баг в Qt. Решение:
1) другая версия Qt
2) быстро накатай багрепорт
3) накостыляй какой-нибудь тупое решение типа добавления избыточных </a> в конце каждой ссылки, если это поможет, или ещё что
#185 #994806
>>994798
Слишком много сложных вопросов.
#186 #994809
>>994766
Попробуй пока что в отдельное место выводить текст, потом с него уже загружаться. Заодно проще отладить будет, если что.
994811
#187 #994811
>>994809

> потом с него уже загружаться


Что ты имеешь ввиду?
#188 #994812
>>994796
Хуй его знает, я сейчас чекнул я себя, под 5.8 все работает, или ты на говне мамонта 4.8 сидишь, а?!
994813994815
#189 #994813
>>994812
4.2.1, не бей, лучше обоссы.
994814
#190 #994814
>>994813
Это даже не легаси, это пиздец. Надо было тогда на Qt3 делать, если в жопу полез без мыла.
14 Кб, 477x252
#191 #994815
>>994812
а нет, обосрался. Кинь прожэкт плс
994817
#192 #994817
>>994815
http://rgho.st/7fBqZY4ml

Виджеты Qt, которые не-QML, должны работать все без проблем, поскольку это дело уже отточено. Другое дело QML, ебал их маму.
994823
#193 #994822
http://ideone.com/cATtjT

Скажите, почему мне всё таки пишет Welcome? Ведь объявление переменной B[2], и B[3] просто не может существовать. Или всё таки может? Если может, то зачем указывать размер массива?
994834
#194 #994823
>>994817
Он у тебя любой текст в ссылку хуячит
994826
#195 #994825
Сап, плюсоводы. Как у вас с работой, удаленной работой, вкатыванием без профильной вышки (есть техническая из лютой шараги) и английским(которого я не знаю)? Есть ли смысл продолжать учить, если туповат (память плохая) или мне с плюсами ничего не светит и лучше не выебываться, а учить фронтенд?
994828
#196 #994826
>>994823
Ну замени на что-то такое, хули ты как дурак https://pastebin.com/8hLuuTKm .
Диплом уже блять на носу, а руки из жопы.
994848994853
#197 #994828
>>994825
Почему решил кресты учить?
994843
#198 #994831
>>994803
UWM
W
M

Собрал в себе красоту WPF и мощь крестов (а также бонус: CLR сверху и win10 only, торопитесь, предложение ограничено)
994835
#199 #994834
>>994822
-Wall -pedantic для GCC. Олсо, у тебя тут UB из-за того, что в двубайтный массив запихнётся больше двух байт.
994838
#200 #994835
>>994831
Чё это за хрень? Даже гугл не знает.
994840
#201 #994838
>>994834

Ну, по факту он трёхбайтный.
994842
#202 #994840
994844
#203 #994842
>>994838

Тьфу, не так понял. Думал, ты имеешь ввиду двухбитный.
#204 #994843
>>994828
В универе семестр на них микроконтроллеры программировали, и они мне больше понравились, чем ассемблер.
994845
#205 #994844
>>994840
Опять наебал. Не та ссылка, ту потерял. Ну короче на XAML'е можно ебашить GUI для крестов. Инструкция была на MSDN, но я чё т проебал.
994846
#206 #994845
>>994843

>чем ассемблер


Ну ясен хуй. Представляешь, в мире есть языки намного лучше, чем пропёрженные кресты.
994852
#208 #994847
Тааак, падажжи ёбана. Это получается, что если я создаю массив M[2], то я могу обращаться к нему как к M[0] и M[1], но не как M[2]? Так, что ли?
994849994850
5 Кб, 398x331
#209 #994848
>>994826
Ну баг на месте
#210 #994849
>>994847
Массив с размером два, отсчёт идёт с нуля.
994851
#211 #994850
>>994847
При объявлении массива в скобках ты указываешь размерность. Индексация начинается с нуля.
994851
#213 #994852
>>994845
Это то я уже понял. Но сейчас все равно не определился, в какую сторону двигаться. Т.е. понятно, конечно, что вкатиться легче всего через веб, но что-то как-то он совсем уныло выглядит. А по плюсам - читаю сейчас Страуструпа для чайников - и чем больше читаю, тем больше нравится. Я бы и дальше чиал и не замарачивался, но память подводит: буквально пару недель перерыв сделал, и все, открываю книгу где остановился - и нихрена не понимаю, все забылось. Вот и думаю - может нахер эти кресты.
994855994856
#214 #994853
>>994826
Ну бля, если у тебя бага нет, версии qt одинаковые - то это совсем странно. Бинарники дай что-ли.
162 Кб, 800x747
#215 #994855
>>994852

>нахер эти кресты.



зарепортил
#216 #994856
>>994852
А ты какую нибудь конкретную задачу себе поставь для обучения.
994859
#217 #994859
>>994856
Даже на ум не приходит, какую задачу можно было бы перед собой поставить: какую не придумаю - оказывается, что решить ее куда быстрее выйдет используя другой ЯП, даже если изучать его придется с нуля.
994860994861994997
#218 #994860
>>994859
Что нибудь с ОС сделай
#219 #994861
>>994859
Вся суть крестов.
#220 #994921
Что значит оператор "^" в следующем случае
String^ MergeSections
994930
#221 #994930
994932
#222 #994932
>>994930
Типа хурма для CLR из .net? Потом GC ее подберет или что?
994935
#223 #994935
>>994932
Не знаю, что за хурма, но да, скидывает объект на сборщик мусора.
#224 #994943
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main(){
ifstream f1;
int key;
cin>>key;
char bf;
if(key>0)f1.open("1.txt");
else f1.open("2.txt");
vector<char> vch;
system("cls");
for(int l=1;!f1.eof(); l++){
f1.get(bf);
char ii;
ii=bf+key+key*l;
vch.push_back(ii);
}
f1.close();
ofstream f2;
f2.open("2.txt");
for(int y=0; y<vch.size()-1; y++){
f2<<vch[y];
}
f2.close();
return 0;
}

Проблема - шифруется прекрасно, но при дешифровке(когда ввожу ключ меньше нуля) происходит внезапный выход из цикла, файл перестает читаться, хотя байты в нем еще есть. Какой-то байт зашифровался в байт, обзначающий конец файла? Что за хуйня? Памагити
#224 #994943
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main(){
ifstream f1;
int key;
cin>>key;
char bf;
if(key>0)f1.open("1.txt");
else f1.open("2.txt");
vector<char> vch;
system("cls");
for(int l=1;!f1.eof(); l++){
f1.get(bf);
char ii;
ii=bf+key+key*l;
vch.push_back(ii);
}
f1.close();
ofstream f2;
f2.open("2.txt");
for(int y=0; y<vch.size()-1; y++){
f2<<vch[y];
}
f2.close();
return 0;
}

Проблема - шифруется прекрасно, но при дешифровке(когда ввожу ключ меньше нуля) происходит внезапный выход из цикла, файл перестает читаться, хотя байты в нем еще есть. Какой-то байт зашифровался в байт, обзначающий конец файла? Что за хуйня? Памагити
994944
#225 #994944
>>994943
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main(){
ifstream f1;
int key;
cin>>key;
char bf;
if(key>0)f1.open("1.txt");
else f1.open("2.txt");
vector<char> vch;
system("cls");
for(int l=1;!f1.eof(); l++){
f1.get(bf);
char ii;
ii=bf+key+key*l;
vch.push_back(ii);
}
f1.close();
ofstream f2;
f2.open("2.txt");
for(int y=0; y<vch.size()-1; y++){
f2<<vch[y];
}
f2.close();
return 0;
}
Проебался
#225 #994944
>>994943
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

int main(){
ifstream f1;
int key;
cin>>key;
char bf;
if(key>0)f1.open("1.txt");
else f1.open("2.txt");
vector<char> vch;
system("cls");
for(int l=1;!f1.eof(); l++){
f1.get(bf);
char ii;
ii=bf+key+key*l;
vch.push_back(ii);
}
f1.close();
ofstream f2;
f2.open("2.txt");
for(int y=0; y<vch.size()-1; y++){
f2<<vch[y];
}
f2.close();
return 0;
}
Проебался
995002
#226 #994997
>>994859
Суть крестов. Так тебе нужно учить кресты или нет? Если надо - зачем ноешь?
#227 #995002
>>994944
Лень читать. Пройди по коду и обрати внимание на каждое место, в котором у тебя имеет значение знак, в котором знаковое значение присваивается беззнаковой переменной и т.д.

Олсо, ideone.com
#228 #995016
>>994766

> Диплом горит, помогите господа.


Что за диплом ты делаешь?
Очередной чат?
995036
#229 #995036
>>995016
Он самый, но с прямым подключением, шифрованием, ДХТ и ещё парой плюшек. Делаю то, чем сам буду пользоваться после написания. И в рот пусть ебутся все телеграмы и прочее.
995037995041
#230 #995037
>>995036
Зачем тебе для всего этого кресты?
мимокрокодил
995038
#231 #995038
>>995037
Потому-что я угорел по qt, отличная штука. Хочу научится в нём кодить ака боженька.
#232 #995041
>>995036
Самому себе будешь писать сообщения?
995042
#233 #995042
>>995041
Подколол так подколол.
995054
#234 #995054
>>995042
Так это была такая шютка? Хих.
#235 #995062
>>994766
Костылями решил проблему. Теперь обычные строки буду писать - ui->textBrowser->append("<span>me# " + message + "</span>\n");
#236 #995169
Можно ли при помощи std скопировать каждый N-ый элемент вектора?
995189995190
#237 #995189
>>995169
Готовых способов нет. Вот пример с помощью copy_if и лямбды.
76 Кб, 572x575
#239 #995298
Почему крашится на некоторых файлах?
995313995315
#240 #995313
>>995298
После удаления нужно прерывать итерацию. Итераторы, которые в for-each цикле использовались, становятся мусором.
995320
#241 #995315
>>995298
Смотри пример использования erase
http://en.cppreference.com/w/cpp/container/map/erase
995320995321
#242 #995320
>>995313
>>995315
Я недавно учить начал, поэтому не совсем понимаю. Я же удаляю элемент в самом конце итерации, т.е. это ни на что влиять не должно, разве нет? Почему на многих файлах оно работает вполне корректно?
995330
#243 #995321
>>995315
В любом случае, спасибо за инфу.
#244 #995330
>>995320
У тебя с максимальным значением несколько ключей может быть. Первый ты удалишь, а вот дальше не понятно, что происходит.
995336
46 Кб, 575x539
#245 #995336
>>995330
Ну как-то же оно удаляет несколько ключей с максимальным значением перед тем, как крашнуться. Если в указателе рандомный мусор - то не понятно, как оно работает до момента краша.
995338995339
#246 #995338
>>995336
В этом вся суть. Оно работает до какой-то магической черты, а потом падает.
#247 #995339
>>995336
Просто воспользуйся способом в статье - и всё будет робить.
995345
#248 #995345
>>995339
Что-то оно ни с
p = words.erase(p.first);
ни с
p = words.erase(p);
вообще не компилится
995346995920
#249 #995346
>>995345
Тебе ясно написали: воспользуйся способом в статье.
R u retarded?
995347
#250 #995347
>>995346
Я не хочу через сишное условие for делать.
995349
#251 #995349
>>995347
So you are.
#252 #995373
Почему майкрософтовый cmake думает что у него тулчейн версии 150, а на деле 141? А потом он еще и говорит, что библиотек буста нет.
Что не так с этими майкрософтами?
995397
#253 #995397
>>995373
Спермопроблемники — в /s/
72 Кб, 1000x563
#254 #995417
Скоро меня пригласят в геймдев-фирму на собеседование. К чему следует подготовиться?
995420995467
#255 #995420
>>995417

> К чему следует подготовиться?


Что тебе под ноги полотенце кинут.
#256 #995467
>>995417
к работе забесплатно
#257 #995746
Ухбля, гуру местные, подскажите что-нибудь из чтива, гайдов и любого дерьма, которое помогут разобраться с билдером чёртовым. Вообще интересует оче подробно расписанные гайды ибо сильно туплю при виде всех этих его графический инструментов.
Ещё хотелось бы, узнать про создания на нём простых изображений.
С меня нихуякак обычно
995755
#258 #995755
>>995746
Какой это тебе нахуй билдер. Борланд что ли или как их там. Он же уебищный.
Если ты нубас, выкачай QtCreator, будет гораздо проще, чем вот в этой хуйне.
995756
#259 #995756
>>995755
Я бы это дерьмо даже не трогал, но вот препода моего это не колышет.
#260 #995766
Юзаю CodeBlocks, все правильно делаю?
#261 #995920
>>995345
Давай я загугля за тебя, скотыняка.
http://www.cplusplus.com/reference/map/map/erase/
Что возвращает erase? А ты, сука, что делаешь?
У типичного вопроса на собеседовании "нахуй нужен erase" - ты соснул. Поздравляю, ты даже не интерн, учитывая что тебе сказали, где ошибка.
#262 #995933
Анон, поясни мне такую вещь.
Я юзаю qt creator (только как иде). Там своя система сборки и свои файлы для проектов.
Вот, например, я хочу исходники своего поделия выложить для всех.
Как быть юзерам которые юзают другие иде и другие системы сборки?
Ведь им придётся менять пути к либам на свои постоянно?
А если юзается какая-то специфичная версия библиотеки?
995940
#264 #996013
Как так получается что мы используем конструктор шаблонного класса std::thread без передачи значений в сам шаблон? Я не понимаю...
996022
9 Кб, 277x268
#265 #996022
>>996013

> шаблонного класса std::thread

#266 #996028
Мейлач. рассказывали, что можно написать многопользовательскоеприложение без тредов и форков. Это правда?
Под многопользовательским подразумевается, что я могу запустить два пользователя и они будут работать параллельно, не мешая друг другу, но с возможностью изменять их общие данные.
#267 #996029
>>996028
Мейлач?
996139
#268 #996042
>>996028

>но с возможностью изменять их общие данные.


Алан Бьюли, «Изучаем SQL».
Старательно изучаем!!!
#269 #996139
>>996029
С разморозкой. https://2ch.hk/abu/res/52038.html (М)
>>996028
Разумеется, это возможно. Представь себе, что ты читаешь данные из stdin и используешь их, но только данные могут прилетать не из одной консоли, а из нескольких. Если в случае с одной косолью у тебя была одна структура на всю программу, то во втором случае у тебя будет массив структур для всех пользователей.
#270 #996195
>>996028
Хрен знает, про что тебе рассказывали. Про корутины, select/poll?
#271 #996206
>>996028
https://ru.wikipedia.org/wiki/Цикл_событий

Одна из возможных реализаций такого приложения.
#272 #996208
Ананасы, хочу, чтобы мой QWidget, помещённый в layout, был квадратным. Как это можно реализовать. Нагуглить не могу.
#273 #996212
>>993446 (OP)
Где можно почитать сжато про распределители памяти(allocator<T> вот это все).
996219
#274 #996219
>>996212
Гуглил уже?
#275 #996227
Нужна небольшая помощь в реализации класса ассоциативного массива. Он должен организовывать данные как бинарное дерево поиска, содержать операции вставки элемента, удаления элемента, поиска по ключу
Много гуглил и ничего конкретного не нашел, некоторые предлагают в качестве примера брать реализацию красно-черного дерева, но там тоже не особо всё ясно
Вот это наиболее близкий вариант, как мне кажется https://www.codeproject.com/Articles/149879/Associative-Array-in-C
996248
#276 #996248
>>996227
Что тебе не понятно?
996356
#277 #996356
>>996248
насколько эта реализация соответствует моему заданию
996369
#278 #996369
>>996356
Это вариант на массиве. Тут деревом поиска даже не пахнет.
997266
#279 #996370
Полистал я вашу шапку, решил Qt Creator поставить. При попытке создать простое консольное приложение пишет, что нет подходящих комплектов. Хотя MinGW стоит и в настройка дефолтного комплекта прописан. Я даже вручную через него скомпилировал минимальный код. А ide почему-то не может.
Я не могу нагуглить как решить эту проблему. Всё что я нашёл, всё сводиться к предложению загрузить Qt полностью.
996372996406
#280 #996372
>>996370
Не стоит эту IDE использовать для чего-то, кроме Qt. Она хуже любой другой распространённой.
996404
#281 #996404
>>996372
Хорошо, понял, спасибо.

Вот я в ужасе от этого, горит просто от крестов. Точнее как, сам язык мне очень нравиться, удобно с указателями всё, нет непонятных ограничений и прочего. Я с делфи начинал. Качаешь любую версию, качаешь любой пример, хоть десятилетней давности, запускаешь - и он сходу, сука, компилируется. А в с++ сколько не вкатывался в визуал студию - постоянно компиляторопроблемы. Загружаю пример, загружаю специально версию визуал студии под него (то есть уже даже не пример под версию, а версию под пример), открываю, а там 53 ошибки среди директив компилятора в каких-то *.h, которые в самой среде, вне примера. Я не знаю уже, говорят, мол с++ сложный, да пошли они к чёрту, там компиляторы сложнее языка в десять раз. Эклипс сейчас тоже вот ошибку выдаёт при попытке запустить хоть что-то.

Может быть есть что-то типа pelles c, только для с++? Где компилятор вместе с ide весят 10 мб, и где можно нажать создать проект, запустить проект, и он запуститься сразу?
#282 #996406
>>996370
Короче, делаешь так: New Project -> Non-Qt Project -> Plain C++ app. Там выбираешь систему сборки Qbs. Сразу создастся обычный консольный Hello world и он будет нормально компилироваться.
996409
#283 #996409
>>996406
Тоже так думал, пока не разобрался с ней более-менее. Единственное пока с чем не разобрался, как в ней пользоваться дебаггером, сколько пробовал нихера не получается.
996414
#284 #996414
>>996409
Во, благодарю от все души. А я то почему-то упорно пытался комплект настроить, гуглил значения полей и что в них должно быть.

>как в ней пользоваться дебаггером


Да пошёл он к чёрту, этот дебаггер. Я уже даже консолькой через батник и gcc готов собирать. Восемь часов пытаюсь этот мусор запустить. Я из армии только пришёл, идей куча накопилась, радовался, думаю, свободное время, сейчас поставлю какой-нибудь новый компилятор (сейчас же всплывают в разных областях такие новые проекты с открытыми исходниками), альтернативу визуал студии, где можно 100% времени уделить коду, а не только 60%. А то не сидеть же на своём умирающем делфи, да тормозном питоне. А тут вот. Ещё раз спасибо, прям настроение исправил.
996417
#285 #996417
>>996414
Не за что. Кстати, сразу на будущее скажу, что по дефолту последние стандарты не включены. Чтобы включить с++14 нужно в qbs файле проекта написать cpp.cxxLanguageVersion: "c++14". Также если хочешь запускать отдельный экзешник без дополнительных библиотек, то нужно там же прописать cpp.linkerFlags: "-static"
996446
#286 #996427
ПЛАТИНОВЫЙ вопрос, но все же
Что по идеи должен уметь джун? или хотя бы стажер или я настолько нулячий, что никуда вообще не возьмут :с
996428996680
#287 #996428
>>996427
Гуглить.
#288 #996433
Сап, анон. Пишет тебе крестовик-наверное-джун-наглости-на-мидла, работающий в унылом госучреждении и параллельно ебу труп науки в универе. Наткнулся на вакаху мечты - https://streamhpc.com/job/openclcuda-expert/. Собственно, занимаюсь я примерно тем, чем занимается эта контора - пишу код в соответствии с требованиями инженеров и физиков и параллелю на видеокарте, ну и ещё всякой хуйней по мелочи, но это неважно. Думаю попробовать прибиться к ним, но смущает пункт про то, что требуется опыт работы с архитектурами в количестве больше двух. Какие архитектуры имеются ввиду? Разные видеокарты? Плисы, ардуины и проч? RISC, CISC? Может быть, вопрос звучит глупо, но я дальше обычного комплюхтера с его цп и видеокартой не лез. Более того, я на самом деле хуёво разбираюсь в архитектуре э-вэ-эм, потому как в основном занимался алгоритмами, матаном, высокоуровневыми задачами, а по диплому вообще физик-теоретик, но думаю, смогу быстро подтянуть, если таки решусь к ним постучаться. Стоит ли вообще позориться перед белыми людьми с таким уровнем знаний?
996436996469996684
#289 #996436
>>996433
Или тут вообще имеется в виду архитектура кода и я идиот, лел.
#290 #996446
>>996417

>то нужно там же прописать cpp.linkerFlags: "-static"


Не помогает. Ексешник пустой программы начинает весить 2 мб, а при запуске жалуется на отсутствие "libgcc_s_dw2-1.dll".
996539996792
#291 #996469
>>996433

>ON 5 MAY 2015


ну да, спустя 2 года, вакансия, без сомнений, еще актуальна)
996485
#292 #996485
>>996469
Думаю, это тот случай, когда набор идет постоянно, но не спеша, и с каждым кандидатом все обсуждается отдельно. Тем более что сайт они обновляют.
#293 #996539
>>996446
Хм, хуй знает, если честно. У меня все нормально. Посмотри в папке bin компилятора этот файл. Или скачай чистый mingw с офсайта и им пользуйся, но только юзай Qbs вместо qmake.
996576
#294 #996576
>>996539
Вот я тоже. Сейчас поставил netbeams, требует то ли mingw, то ли cywgin, нечто make и другой мусор. Ставлю всё прям по инструкции ещё раз отдельно для него, а оно пишет, что всё-равно не хватает некоторой dll непонятно для чего. Поставил kdevelop, поставил geany, поставил CodeLite и всё одно и то же. Как люди вообще используют этот мусор - не представляю, самим то приятно с этим разбираться? Просто невообразимо выбешивает это, не передать словами. Почему вот по пунктам с офф-сайта скачиваю всё необходимое, а оно не работает, неужто так сложно поподробнее написать.
Всё что необходимо, просто минимальную ide, текстовый редактор с поддержкой нескольких файлов и выделением ключевых слов в которой кнопки компилировать и запустить работают. Как pelles c на 10 мб (где даже отладчик есть, между прочим) - побаловаться-вкатиться в новые стандарты, ничего такого серьёзного не требуется. А тут скачай то, скачай пять утилит для компиляции, линковки, пропиши им все конфиги и получи непонятно что. Сейчас удалил вообще всё что стояло, пойду по второму кругу. Я уже даже почти готов громадную визуал студию поставить.
#295 #996580
>>996576
Чем тебя вижел студия не устраивает? Бесплатная, охуенный жырный инталлятор со всем на свете, огромный мсдн и не менее огромный стэковерфлоу. Притом, что большая часть энетрпрайза и геймдева как раз на студии, так что если учить, то ее.
996596996663996677
121 Кб, 1354x670
#296 #996596
>>996580

> охуенный жырный инталлятор со всем на свете


Вот именно этим. Последний раз когда я её ставил, там она гигабайта четыре и я уже офигел от жизни. Какой-то пусть даже навороченный текстовый редактор запускается две минуты и компилирует с такой же скоростью. А то что сейчас я вообще боюсь представить сколько времени будет запускаться и как работать. Просто галочка для мобильных телефонов добавляет 10 Гб, может быть так принято сейчас, но я не вижу причин, куда там столько всего. Я в армии прям с андроида непонятно чем создавал apk за неимением лучших вариантов. Так соответствующее приложение занимает 27 мб. То есть фактически 27 мб достаточно для создание приложений под андроид (и даже если он использует что-то из самого себя, полный образ андроида 300 мб где-то). Хрен с ним, там ещё поддержка айфона и прочего, но не 10 же Гб?

>А в с++ сколько не вкатывался в визуал студию - постоянно компиляторопроблемы. Загружаю пример, загружаю специально версию визуал студии под него (то есть уже даже не пример под версию, а версию под пример), открываю, а там 53 ошибки среди директив компилятора в каких-то *.h, которые в самой среде, вне примера.

996600996602
#297 #996600
>>996596
Ну, во-первых, там допгалочки есть для охочих до места, тут просто ставит наверняка всё. Скоре всего сразу хуюнити и воображаемый паровоз.
По-хорошему тебе наверное надо только шиндовс сдк и кресты а остальное доставлять по мере надобности.
А че за ошибки у тебя с хедерами?
Может ты тупо копипастил файлы проекта в инклюд и сорс, не указав их как пути инклюда и сорса? Это самое очевидное, системные либы студия уже сама пишет, если ты их ставил.
Давай конкретику, все равно тред полудохлый.
996660
#298 #996602
>>996596

>Просто галочка для мобильных телефонов добавляет 10 Гб


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

Что сдк иос, что офф. сдк андроида в полном составе весят по 4-6 гб.
#299 #996605
Я знаю питон, Go. Думаю начал писать на спп. С чего мне начать?
996667
#300 #996617
>>996576
Для твоих целей идеально подходит CodeBlocks. Только качай сразу с компилятором в комплекте. В ней все очень просто, даже настраивать ничего не надо, и даже может компилировать отдельные cpp файлы, а не только проекты, как студия, qtcreator и т.д. И сразу по дефолту включена статическая линковка, т.е. все компилируется без зависимостей от dll. Я вначале ее использовал, сейчас, правда, перешел на qtcreator. Хотя иногда и сейчас использую ее для дебаггера и компиляции статической библиотеки, т.к. пока не разобрался, как это сделать в qt.
996660
#301 #996656
Пишу приложение, работающее с sqlite. Мне нужно хранить в БД дату поступления на работу и иметь в классе поле для хранения этой даты. В каком формате хранить дату в классе?
996683
71 Кб, 1152x1021
#302 #996660
>>996600

>Давай конкретику, все равно тред полудохлый.


Хорошо. Я поставил визуалстудию таки. Без совсем лишних галок примерно 4 Гб, хрен с ним.
Запускаю, кликаю создать простую консольную программу. Нажимаю запустить, и оно выдаёт ошибку, не найден sdk версии 8.1. По клику изменить целевую платформу можно переключать win32 и win64, обе не работают. Если прописать в настройках версию 7 тоже не работает. Зачем мне этот sdk? В тех четырёх гб я тогда что скачал, если нельзя пустую программу скомпилировать? Я не собираюсь использовать возможности win8.1, даже возможности win7 не буду использовать, максимум создам окно, подключу древний opengl и буду обрабатывать нажатия мышки/клавы. Функции ос, которые, наверное, со времён win2000 не менялись.
>>996617

>CodeBlocks


Идеально, есть даже версия не требующая установки, можно с собой таскать.
996667996683
#303 #996663
>>996576
>>996580
Студия как я понимаю сейчас работает на .NET, а использование Java/C# для разработки графических приложений известно к чему приводит.
На C++ написаны только QtCreator и CodeBlocks.
996667997799
#304 #996667
>>996605
С хеллоуворлда.

>>996660
Ты пишешь

>Нажимаю запустить, и оно выдаёт ошибку, не найден sdk версии 8.1.


Но почему-то потом ты пишешь

>По клику изменить целевую платформу можно переключать win32 и win64, обе не работают. Если прописать в настройках версию 7 тоже не работает.


Ставь шиндовс сдк раз хочешь под шинду девелопить.
Покажи дерево проекта, кстати, если ты создавал Empty Project оно не должно хотеть сдк и должно собираться само.
И поменяй язык, только уёбки кодят на русском.
>>996663
На плюсах можно самостоятельно на винапи хуярить, просто толковых готовых либов нет, проще самому нахерачить под ту утилитку что пишешь, либо стырить готовую большую либу.
175 Кб, 500x480
#305 #996677
>>996580

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



> учить IDE

996678
#306 #996678
>>996677
Ну да. Это не борланд си, тут надо хоть пару раз ошпариться с настройками проекта, директивы препроцессора позыркать и подключать проекты в солюшен.
Ты хочешь сказать, что это ОЧЕВИДНО и ПОНЯТНО без изучения?
996683
#307 #996680
>>996427
Бумага ответу
#308 #996683
>>996678
Систему сборки настрой, маня. Нормальные люди уже давно перешли на внешние генераторы проектов (GYP, CMake и прочее говно), а не привязываются к какой-то конкретной IDE.
Visual Studio нужна, чтобы на нее накрутить Visual Assist X или решарпер и послать нахуй интеллисенс, который окромя полутора подсказок для крестов выдать нихуя не может.
Директивы препроцессора нужны, если ты особо упорот и уж очень хочешь себе натвикать хуйни, как какой-то аудиофил, в большинстве случаев, даже в нагруженных приложения, на многие директивы, за исключением директив на добавление служебной информации и оптимизации компилятора насрать абсолютно, потому что прирост производительности от них нулевой, если даже не отрицательный.
Алсо, скажу тебе, про охуительное чувство, когда заголовочники и сорцы расположены в одной куче, но в проекте они по отдельным папочкам, и попробуй блять в репе найди что тебе нужно из этого дерьма.
Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.

>>996660

>> Идеально, есть даже версия не требующая установки, можно с собой таскать.


Говно ебаное, даже не пытайся пользоваться этим легаси чмом. IDE, которая не может выводить типы для auto и делать нормальные пометки об ошибках нужна была лет 17 назад (если ты не говнокодер ЦЭ99, подавайте мне бинды сюда, ко-ко-ко, нужно следить за легаси, стандарты вносят слишком много изменений, register выкинули, да как они смеют). Единственный плюс этого корыта в том, что парсит заголовочные файлы в поисках объявлений он достаточно быстро (ну а хули нет-то, если он ничего другого делать не умеет).
Тут, наверно, будут советовать CodeLite и прочий мусор, который весит по питнадцоть мегобайт. Ты знаешь, что такое море крови ты наверное не купался в этом дерьме ты искупаешься тебе мало не покажется (цитаты Великих Людей)

>>996656
В timestamp переводи и храни как число. Благо 64-битная метка времени позволяет нам хранить наши говноподелки до времен терминаторов или может быть даже больше...
#308 #996683
>>996678
Систему сборки настрой, маня. Нормальные люди уже давно перешли на внешние генераторы проектов (GYP, CMake и прочее говно), а не привязываются к какой-то конкретной IDE.
Visual Studio нужна, чтобы на нее накрутить Visual Assist X или решарпер и послать нахуй интеллисенс, который окромя полутора подсказок для крестов выдать нихуя не может.
Директивы препроцессора нужны, если ты особо упорот и уж очень хочешь себе натвикать хуйни, как какой-то аудиофил, в большинстве случаев, даже в нагруженных приложения, на многие директивы, за исключением директив на добавление служебной информации и оптимизации компилятора насрать абсолютно, потому что прирост производительности от них нулевой, если даже не отрицательный.
Алсо, скажу тебе, про охуительное чувство, когда заголовочники и сорцы расположены в одной куче, но в проекте они по отдельным папочкам, и попробуй блять в репе найди что тебе нужно из этого дерьма.
Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.

>>996660

>> Идеально, есть даже версия не требующая установки, можно с собой таскать.


Говно ебаное, даже не пытайся пользоваться этим легаси чмом. IDE, которая не может выводить типы для auto и делать нормальные пометки об ошибках нужна была лет 17 назад (если ты не говнокодер ЦЭ99, подавайте мне бинды сюда, ко-ко-ко, нужно следить за легаси, стандарты вносят слишком много изменений, register выкинули, да как они смеют). Единственный плюс этого корыта в том, что парсит заголовочные файлы в поисках объявлений он достаточно быстро (ну а хули нет-то, если он ничего другого делать не умеет).
Тут, наверно, будут советовать CodeLite и прочий мусор, который весит по питнадцоть мегобайт. Ты знаешь, что такое море крови ты наверное не купался в этом дерьме ты искупаешься тебе мало не покажется (цитаты Великих Людей)

>>996656
В timestamp переводи и храни как число. Благо 64-битная метка времени позволяет нам хранить наши говноподелки до времен терминаторов или может быть даже больше...
996685996694996709
#309 #996684
>>996433
Бумп штоле
#310 #996685
>>996683

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


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

>Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.


Это пичот, но у меня юникод. А на работе постоянно сталкивался с этой ебаниной.
996687
#311 #996687
>>996685

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


Ну проще, конечно же, когда можно не прибегая к посторонним инструментам, сделать все как надо. Тысячи окон уже осточертели.
Но соль в том, что даже при использовании двух IDE одновременно (открываю CLion и MSVS), я не могу получить адекватного редактирования кода (CLion в этом преуспел, зато автокомплит работает криво и куча раздражающих косяков, да и вообще пиздец бывает зачастую в большом проекте, но сейчас как-то этого поубавилось) вместе с хорошей производительностью и нормальной отладкой (отладка в студии хорошо, хотя были случаи, когда отладчик загибался и не хотел читать память, приходилось перезапускать всю студию, а студию с решарпером быстрой назвать язык не поворачивается). Короче, на двух стульях блять, как меня это доебало, если честно...
996690996709
#312 #996690
>>996687
Студия за эти годы создала впечатление наиболее полноценного и качественного продукта.
Экскод падал по три раза на дню, кодоблоки и прочие уже не такие полноценные.
ВС Код показался хорошей быстрой легковесной альтернативой если пришьёшь к ней компилятор.
996692996695
#313 #996692
>>996690
В целом, соглашусь с тобой. Я бы сейчас даже на CLion полностью перелез, дак он кривой падла (но гораздо лучше, чем пару лет назад, когда первые версии выходили)
175 Кб, 500x480
#314 #996694
>>996683

>Кстати, вот еще одна просто охуительная штука, MSVS сохраняет файлы в ЛОКАЛЬНОЙ КОДИРОВКЕ, готовься, что твои cp-1251 encoded файлы будут пестрить кривыми комментариями в любом более-менее адекватном вьювере репозиториев.



> комментарии на русском

996696
#315 #996695
>>996690

>ВС Код


Не думаю что десктопные приложения на яваскрипте могут быть легковесными.
996697
#316 #996696
>>996694
ИМХО лучше на русском, чем на кривом англицком. Видал я комменты, от которых ржать хотелось. Пускай человек выражается правильно, а не будет ограничен знаниями неродного языка. Комменты на том языке, который человек знает хорошо более выразительны, и должны объяснять сжато и в то же время точно принцип работы того или иного метода/куска кода.
Алсо в принудительных английских комментариях смысла не особо много, если вся контора располагается в одной стране без зарубежных участников. Может, в коей-то мере, это и интересно, но больше будет походить на какой-то Брайтон-Бич, где все разговаривают на рунглише.
996697
#317 #996697
>>996695
Однако ж.
Я, конечно, его сравниваю с родным братухой атомом, платным саблаймом и добротным нп++.
Щас немного попробовал вим и мне кажется, что тут что-то есть. Но пока нет времени навернуть (говорят емакс пижже). В коде плюгины одной кнопкой ставятся, тот же пуфон дебажить одно удовольствие.

>>996696
Толковый кодер комментариев не пишет, ибо что написано с трудом должно читаться с трудом.
А кроме шуток - надо ангельский тянуть хотя бы в предметной области, а то напишешь контроллер панелей как painController и прочие перлы и комменты даже на русском не спасут.
996701996876
#318 #996701
>>996697
Интерфейсы следует документировать, реализацию можно избавить от этого, в принципе. Если архитектура документируется, то от комментирования можно отказаться, да. Самодокументируемый код, это, конечно же, хорошо, но никто не подскажет без соответствующих подсказок, является ли метод блокирующим или нет, как он вызывается и чем отличается от подобного метода с интересным суффиксом.
Английский нужно знать, не спорю, чтобы потом несуразиц не было, да и документация на те же API требует хотя бы средненьких знаний.
996703
17 Кб, 600x384
#319 #996703
>>996701
Ну хули, всё правильно сказал. Мы все знаем, как делать правильно, только реальность оказывается проворнее.
#320 #996709
>>996683

>Говно ебаное, даже не пытайся пользоваться этим легаси чмом.


> IDE, которая не может выводить типы для auto


Я пока даже не знаю что это, я с++11 только издали видел.
>>996687

>Короче, на двух стульях блять, как меня это доебало, если честно...


А на люниксах есть решение, раз уж ты всё ругаешь? Мне то для себя, могу свободно обперекатываться.
996919
#321 #996781
написал односвязный список, хранящий статические данные - строчки
почему то функции стандартных библиотек tolower toupper
не работают, поэтому не могу реализовать статический метод, который меняет регистр этих строк, программа нормально компилируется и всё работает, все условия проходят, но строчки не меняются, не могу понять почему, помогите плиз
https://pastebin.com/dwxgvqea
996788996791
#322 #996788
>>996781
Эти статические данные у тебя часом не строковые литералы?
996808
#323 #996791
>>996781
Во1 нужно явно присваивать: с = tolower(c)
Во2 условия неправильные: нужно >=a && <=z
996808
#324 #996792
>>996446
Кутэкреактор отличился этим - хуй ты запустишь скомпилрованный файл без деплоя на винде.

Чтобы всё всегда запускалось, надо добавить в PATH все пути к динамическим библиотекам, которые ты используешь, в том числе путь к папке bin компилятора.
#325 #996794
>>996576
Как пользоваться codelite:
- ставишь codelite
- ставишь MinGW
- в настройках указываешь путь к папке MinGW
- добавляешь путь к папке bin в PATH (охренеть, там такая же проблема, как в креакторе)

Всё, оно робит. В линуксе ьаких проблем нет, там все либы в заранее определённых местах.
996913
#326 #996808
>>996788
ну да, а что?

>>996791
да, про присвоение я тупо забыл, спасибо
#327 #996830
пытаюсь реализовать на плюсах простую сортировку пузырьком для элементов односвязного списка, которые хранят в себе строковые литералы (типо чтобы по алфавиту сортировало)
https://pastebin.com/2xPXQkMK
чет вроде должно работать, но не пашет
анонче, нужна твоя помощь
5 Кб, 214x131
#328 #996876
>>996697

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


https://wandbox.org/permlink/747TNFxKBVkr9LN4
996880
#329 #996880
>>996876
Ну и нахера ты это показываешь?
Ты еще пропиши
#define int целое
#define { начало
и пиши на 1с.
996881
3993 Кб, 420x310
#331 #996883
>>996881
Мсье знает толк в извращениях.
996885
#332 #996885
>>996883
Это #импортозамещение
996888
#333 #996887
>>993446 (OP)
Занимаюсь некой хуйнёй.
Есть класс float3, имеющий float v[3];
Есть класс Vec, имеющий float x, y, z;
Возможно ли перегрузить оператор присваивания, чтобы эти 2 типа можно было друг другу присваивать?
996889996942
#334 #996888
>>996885
класс КонтроллерПанелей
Начало
общее:
Панель ПолучитьПанель(цел номер);
Панель СоздатьПанель;
Панель УдалитьПанель (цел номер);
Панель ВыбратьПанель (цел номер);
внутристроч цел ТекущПанель() Начало вернуть выбраннаяПанель; Конец;
внутристроч СледПанель() Начало ВыбратьПанель(ТекущПанель++); Конец;
...
частное:
стд::вектор<Панель> хран;
цел выбраннаяПанель;
Конец
996889
#335 #996889
>>996887
Есть.
>>996888
А что, довольно мило.
996890
#336 #996890
>>996889

>Есть.


Что есть?
Каким образом осуществить перегрузку?
Я пробовал несколько вариантов, но компилятор жалуется на всякие ошибки типа missing type specifier и что-то ещё.
996892996893
44 Кб, 523x705
#337 #996892
>>996890

>>Есть.


>Что есть?


Возможность.
996894
#338 #996893
>>996890
#include <iostream>
using namespace std;
class Vec;
class float3
{
public:
float v[3];
void set(Vec in);
};
class Vec
{
public:
float x, y, z;
void set(float3 in){x = in.v[0]; y = in.v[1]; z = in.v[2];}
};
void float3::set(Vec in) {v[0] = in.x; v[1] = in.y; v[2] = in.z;}
int main() {
Vec foo;
foo.x = 1;
foo.y = 2;
foo.z = 3;

float3 bar;
bar.set(foo);
std::cout<<bar.v[2];
return 0;
}
#338 #996893
>>996890
#include <iostream>
using namespace std;
class Vec;
class float3
{
public:
float v[3];
void set(Vec in);
};
class Vec
{
public:
float x, y, z;
void set(float3 in){x = in.v[0]; y = in.v[1]; z = in.v[2];}
};
void float3::set(Vec in) {v[0] = in.x; v[1] = in.y; v[2] = in.z;}
int main() {
Vec foo;
foo.x = 1;
foo.y = 2;
foo.z = 3;

float3 bar;
bar.set(foo);
std::cout<<bar.v[2];
return 0;
}
#339 #996894
>>996892
Я примерно так и делал.
Сейчас вроде разобрался, проблема походу была в циклических зависимостях файлов.
996899
#340 #996899
>>996894
Разрулил вроде как.
У меня эти структурки были в отдельных файлах.
В начале файлов есть #pragma once ибо они во множестве других мест ещё подключаются.
В одном из файлом (например float3.h) можно подключить второй (Vec.h), и там же реализовать конструктор и перегрузку из Vec в float3.
В файле Vec.h просто в начале пишем "struct float3;", далее в классе/структуре можем объявить прототипы для конструктора и оператора=, и потом в каком-то другом файле написать реализацию этих методов (можно в том же float3.h после объявления структуры float3).
996901
#341 #996901
>>996899
В хедерах реализацию писать моветон, пиши в плюсовом коде.
Можно только мелкие инлайны типа метода-инкрементора.
996902996982
41 Кб, 576x463
#342 #996902
>>996901

>В хедерах реализацию писать моветон


Скачай исходники boost или какой-нибудь реализации стандартной библиотеки и посчитай число строк в хедерах и не-хедерах.
996904996982
#343 #996904
>>996902
Я сказал "моветон". Я себе такое обычно не позволяю.
И нет, я не петух, а плюсер, на петухе я только небольшой скриптинг строк максимум на 500 делаю, посерьёзнее уже задача для плюсов.
#344 #996913
>>996794
Хм, я всё так и делал и не работало. При попытке запуска консольку выводит с сообщением, что программа завершила работу с ненулевым кодом. А сегодня я поставил MinGW в очередной раз, 64-битный, и всё заработало.
И CLion заработал, к слову говоря.
Значит, три с половиной работающих стула уже. Это, codeblocks и ещё половина qt-креатора, которая даже при статической линковке самостоятельный ексешник мне не соизволило собрать.

Всем спасибо большое за наводки и советы - думаю пока этого пространства для плавания хватит, пойду тестировать последние обновы с++.
#345 #996919
>>996709

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


Идеального решения НЕТ. Самое вменяемое по удобству и скорости работы, для меня во всяком случае, это CLion. Eclipse гораздо медленнее, к примеру, да и многих фич у него нет (а может и есть, я с этим уже года 3 не связывался). Недоредакторы, типо codeblocks, codelite, wxc++ (или как его там) и прочие, прочие (в т.ч. всякие редакторы типо atom, vscode и т.д.) это все не то. Рефакторинга нет (имеется в виду нормальный рефакторинг, с редактированием типов параметров, количества аргументов и прочим), вывода типов нормального нет, ошибок шаблонов нет и так далее до бесконечности.
Можно попробовать QtCreator, но он, как по мне, кастрированный слишком, до нормальной IDE не дотягивает, но для новичка, я думаю, сойдет, особенно, если у тебя слабенькая пекарня (потому что все эти java-IDE жрут столько ресурсов, что пиздец...)
#346 #996942
#347 #996982
>>996901
Два чаю этому.
>>996902
Аргумент инвалид, так как шаблоны не разносятся по файлам, а идут инлайном на крайняк выносятся за пределы класса в том же хедере. А теперь ты скачай какую-то не шаблонную либу и посмотри, сколько там реализаций в заголовочниках.
997027
#348 #997027
>>996982

>так как шаблоны не разносятся по файлам,


Очень даже разносятся. Обычно реализацию отделяют и выносят в отдельный хидер - делают .h и .hpp или .inc. В одном хидере необходимый минимум, во втором -тяжелая реализация, которую инклудят в .cpp при использовании.
997032
#349 #997032
>>997027
Ок, но суть то осталась прежней - реализация все равно остаётся в хедерах.
997073
#350 #997071
Анон, у меня есть sqlite база данных с зарплатами сотрудников. Как в ООП-парадигме реализовать выборку данных из этой БД по идентификаторы сотрудника? Есть ли паттерны для решения такой задачи?
997104997109
#351 #997073
>>997032

>реализация все равно остаётся в хедерах.


Но в большинстве случаев этот хидер подключается в cpp и парсится только один раз.
#352 #997104
>>997071

> в ООП-парадигме


Делают ORM.
997107
#353 #997107
>>997104
А без орм?
997123
#354 #997109
>>997071
О блять, тысячи их. Начиная с активного объекта до маппинга (тот же ORM), можно еще шлюз таблицы данных или шлюза записи данных. Если тебе интересны паттерны взаимодействия с базой данных, можешь прочитать Patterns of Enterprise Application Architecture (паттерны корпоративных приложений в переводе), книги что на русском, что на англицком есть в доступе. Ссылок не будет.
#355 #997123
>>997107
Без ORM получится не ООП.
#356 #997218
Можно ли таким способом как-то инициализировать myFloat1,2,3? В таком виде не работает

void ini(float myFloats)
{
myFloats[0] = new float(1.0f);
myFloats[1] = new float(2.0f);
myFloats[2] = new float(3.0f);
}

int main()
{
float myFloat1 = nullptr;
float
myFloat2 = nullptr;
float myFloat3 = nullptr;
float
myFloats[] = { myFloat1, myFloat2, myFloat3 };
ini(myFloats);
}
997219997348
#357 #997219
>>997218
цы, ты зачем переменной nullptr присваиваешь. ты либо делай
float myFloat1=nullptr;
...
float
myFloats[] = {myFloat1,...
либо
float myFloat1, myFloat2,...
...
void ini(float myFloats[])
{
myFloats[0]=1.0f;
...

а еще лучше почитай про указатели.
997220997222
#358 #997220
>>997219
ну ебаный по голове, разметка всё испортила.
float ~myFloat1=nullptr;
...
float ~myFloats[] = {myFloat1,...
либо
float myFloat1, myFloat2,...
...
void ini(float myFloats[])
{
myFloats[0]=1.0f;
...
где ~ - оператор указателя (звездочка).
997223
7 Кб, 421x235
#359 #997222
>>997219
Не знаю как тут вставить код, но в общем вот скрин
997225
#360 #997223
>>997220

>void ini(float myFloats[])


myFloats[] должен же быть типа массив указателей, а не просто массив флоатов, ну в общем даже если так, то все равно не работает, я скрин выше приложил
#361 #997225
>>997222
не компилируется или что?
997229
#362 #997229
>>997225
Компилится, просто делает не то что я хочу, я хочу таким образом иницилизировать переменные myFloat1,2,3 но они так и остаются nullptr, зато если посмотреть потом содержимое myFloats то вот там как раз и создались эти 3 переменные
997231997232
#363 #997231
>>997229
Сударь, вы к нам с мира Джавы приехали?
#364 #997232
>>997229
тогда попробуй сделать myFloat1,2,3 переменными, а массив так и оставляешь двойным указателем и не трогаешь функцию. массив инициализируешь его как &myFloat1, &myFloat2 и тд
997236
#365 #997236
>>997232
Вот так не получится, ибо в действительности у меня там не флоаты будут а указатели на объекты абстрактных классов, т.е. переменными не получится их сделать
997238
#366 #997238
>>997236
гошподи. почему указатели хранишь в флоатах? почему не можешь просто создать указатели абстрактных классов?
997241
#367 #997241
>>997238
просто со стороны выглядит так, как будто ты пытаешься срать через ноздрю. ты в образовательных целях это делаешь или считаешь, что это единственно верное архитектурное решение?
997246
#368 #997245
Не смог ничего нагуглить. Есть же явно какие-то инструменты в библиотеке string для того, чтобы разделить строку по разделителям.
Например из "Плюсы не самый плохой язык"
Можно было вытащить сначала Плюсы, потом не, а потом самый и тд.
Я вот знаю только find() substr(), но тогда нужно буферную строку делать и вообще не красиво получается.
997247997248
#369 #997246
>>997241
И то и то наверное, ну я хочу так инициализировать нужные мне переменные объединив их в массив и передав в функцию, ну раз по-другому нельзя значит буду потом доставать их из массива и приравнивать вручную.
997248
#370 #997247
>>997245

>Плюсы не самый плохой язык


>Нет встроенного типа-строки


>В стандартную либу для строк не завезли .split()

997251
#371 #997248
>>997245
Нету ничего, братишка.
>>997246
Попробуй в своём коде, там где инициализируешь {&myfloat1, ... }, тогда 3 звезды будет, в функции-инициализации нужно тоже поправить.
997249997251
#372 #997249
>>997248
Да я хотел через массив указателей, 3 звезды не оч хочется делать
#373 #997251
>>997248
>>997247
А ну и ладно, не очень то и хотелось. Сам напишу, может даже класс бахну. в портфолионапишу, что имею собственную библиотеку.
#374 #997266
>>996369
тогда в какую сторону двигаться? как-то идей нет
997340
#375 #997340
>>997266
Начни с изучения дерева поиска.
#376 #997348
>>997218
Хуйню какую-то написал, потому и не работает.
33 Кб, 762x269
#377 #997397
wtf?
997404997470997505
#378 #997404
>>997397
Microsoft Visual C++ Redistributable
Написано же
590 Кб, 1600x1000
#379 #997441
Кто кодит с линуксов? Какие подводные? Думаю перекатиться на минт какой-нибудь. но слышал, что с библиотеками под пингввинов все плохо, хотя много инфы нарыть не удалось. Поясните
997460997462
sage #380 #997460
>>997441
Провокация срача незаметна.

> Поясните


За щёку пояснил тебе.
#381 #997462
>>997441
Какие билиотеки тебя интересуют, не msvcrt ли?
997475
#382 #997470
>>997397
Это библиотеки Visual C++ разных версий и битностей. У меня примерно такая же пачка на ЖД, ставлю во избежание сюрпризов, не во всех программах явно написано, что ставить.
#383 #997475
>>997462
Слышал, тот же conio не дружит с линуксом.
997501997504
#384 #997480
>>993446 (OP)
Почему везде (ладно не везде, но много где) пишут, что обучение программированию лучше начинать с C++ ?
997484997921
sage #385 #997484
>>997480
Везде пишут, что с поц-кала.

Впочем, и те, и те — больные на тугодумку.
997524
#386 #997501
>>997475

>> conio


>> линуксом


Школьный учитель по информатике 60 лвл плес
#387 #997504
>>997475

>conio


>2k17


В голос обдристался.
#388 #997505
>>997397
Наслаждайся своей спермопарашей.
#389 #997507
В моём регионе одна вакансия по запросу С/С++
Зато WEB и 1C хоть жопой жуй.
Ума не хватает, чтобы работать на себя. Фрилансу это нахуй не надо кроме студентов с лабами
Уже смазал лыжи в ДС2.
Пасаны, кому нужны кресты в 2017, кроме ынтерпрайз говна?
997509
#390 #997509
>>997507
В крупных конторах типа яндекса, мейла, дохуя нужны. Но если ты чмо, писавшее только laba1.cpp, туда будет почти нереально попасть, а если и попадешь - будешь работать сверх нормы и за копейки. Там макакам платят не особо много, якобы престиж от надписи "Yandex" в трудовой это компенсирует.
997512
#391 #997512
>>997509
Это понятно, чтобы попасть в топы нужен неплохой math-background. Я то макачу уже давно и всё забыл. Есть вариант в Unity-геймдев вкатиться, но там своя атмосфера.
997513
#392 #997513
>>997512
Вкатись в системное или сетевое программирование, будешь потом с десятком флагов возле сокета плясать и еполлы трахать.
#393 #997524
>>997484
Почему? Разве изучение С++ не дает какого-то собого понимания программирования? Почему тогда советуют?
997525
sage #394 #997525
>>997524

> Разве изучение С++ не дает какого-то собого понимания программирования?


Ты про "выучил сипласплас — счетай выучил все языки"?
997528
#395 #997528
>>997525
Наверно. Я же не знаю почему его советуют. Типа чем сложнее язык, тем проще потом перекатиться.
997534
#396 #997534
>>997528
Он скорее просто растягивает очко. Перекатится потом правда легче — всё кажется слишком маленьким для твоего расхуяренного очка, если это конечно не хачкели.
997562997598
#397 #997562
>>997534
А если начинать с хачкеля, то что тогда?
997568
#398 #997568
>>997562
Тогда будешь колесить по дорогам Вальхаллы.
#399 #997588
А это, даже стыдно за такой вопрос, как не создавать консоль вообще при запуске программы? Не скрыть её сразу после запуска, а вообще не показывать, что бы даже не мигала.
997616997755
#400 #997598
>>997534
А для чего в современном мире вообще используется С++?
997615997616
#401 #997615
>>997598
Что угодно, где нужен перформанс. Попробуй пораскинуть мозгами.
#402 #997616
>>997588
Создавай win32 приложения. Аналог на линупсах не знаю.

>>997598
Всякая системная, сетевая, околонизкоуровневая хрень, где не хочется писать с нуля на С, а хочется использовать современный язык с современным синтаксисом и кучей либ на все случаи жизни.
997623997715
#403 #997623
>>997616

> кучей либ на все случаи жизни


Ну это ты конечно слегка напиздел
997633997635
#404 #997633
>>997623
Он про современный язык напиздел, а про либы — это правда.
997635
#405 #997635
>>997633
>>997623
Ну епта, из языков с такими возможностями для системного/низкоуровнего программирования и различными либами, у крестов лучший синтаксис. В общем то, мне кроме крестов и голого С ничё на ум не приходит. Ну разве что ассемблер, но на нем что нибудь прикладное крупное писать - это ояебу пристрелите меня.
997715
#406 #997715
>>997616
На линупсах консоль никогда не показывается просто так. В винде она показывается потому, что программы вызывают WriteConsole вместо printf, в позиксах такой поебени нет (либо она исчезающе редка).
>>997635

>В общем то, мне кроме крестов и голого С ничё на ум не приходит.


Питон, Перл.
997848
#407 #997755
>>997588
Спермоблядь незаметна. Где ещё есть такие искусственные проблемы?
#408 #997799
>>996663

>а использование Java/C# для разработки графических приложений известно к чему приводит.



К чему приводит? В чем подвох? А то вот вкатываюсь и понимаю, что на C# охренеть как проще гуй заделать, причем не надо под 100 мб библиотек таскать с приложением

Кстати, статическая линковнка на Qt требует лицензии (по хорошему). Т.е. сделать-то ты можешь, но распространять нет.
997913997917
#409 #997848
>>997715

>Питон, Перл.


Ты про пхп и жаваскрипт забыл - топовые языки для системного и низкоуровневого программирования.
#410 #997863
Почаны, поясните за сертификаты, кто-нибудь получал, есть ли в них профит?

Где можно попроходить тесты и посмотреть примерные задания, которые выдают для получении сертификата?

Я какое-то время по нужде быдлокодил (на работе заставили выучить если это можно назвать словом "выучить" кресты и писать на них несложные MFC приложения), а сейчас решил взяться за голову и научиться писать нормальный код, за последний год немного подтянул синтаксис, упорядочил знание ООП, конечно, гуру С++ все равно назовут это быдлокодом, но я готов совершенствоваться и дальше.
Теперь хочу попробовать получить какой-нибудь сертификат. Поможет ли это при устройстве на работу? Спрашиваю, потому что читал разные мнения вплоть до того, что сертификаты только хуже делают при трудоустройстве.
997901997969
#411 #997901
>>997863
Двачую этого, тоже интересно
#412 #997913
>>997799
Дотнет уже занимает пару гигов на диске. Виртуальная машина медленно интерпретирует байткод, количество ненужных выделений памяти и кастов типов растёт экспотенциально со сложностью программы, сборщик мусора может полностью заморозить гуй в любой момент. В результате получаем 50% потерю производительности у конечного пользователя только ради того чтобы быдлокодерам было проще шлёпать Form1_Click. Это приемлемо для энтерпрайзных систем на серверах, но графические приложения должны быть исключительно нативными.
#413 #997917
>>997799
В том что это говнище будет работать с таким скрипом, с каким твои, блеять, родители делали тебя, сука, гомункула.

Попробуй на торренте найти ту же 2010 или 2008-ю студию — последние нативные версии. И сравни их с последней, 2017. При том, что она работает куда лучше той же 15-й, оно всё ещё лагает на любом железе хуже жидеи (у той хоть есть честная несколькоминутная индексация, во время которой не поработаешь, а вот у студии такое говно перманентно).
997920998154
#414 #997920
>>997917

О, не знал что студия 2017 не нативная. А я то думал хули она так лагает блять.

Выходит VS2017 написали на C#? пиздос. Зашквар уровня IDE от JetBrains на джаве
998163
#415 #997921
>>997480

Обучение программированию лучше начинать с С.
С++ язык слишком сложный и уже для опытных программистов. Вкатываться в него не имеет смысла.

А вот С более прост, при этом мощь языка так и прет как и в С++.
997926
#416 #997925
Никуда вы не денетесь от прогресса. Гуй на JS/C# — это объективная реальность.

Objective C тоже был в своё время тормозным гогном, но ничего, макоблядь писали.
997928
#417 #997926
>>997921

>мощь языка так и прет


Если не сказать, что ПРОТЕКАЕТ
997927
#418 #997927
>>997926
УТЕКАЕТ
#419 #997928
>>997925

>Гуй на JS/C# — это объективная реальность.


>JS


>J


>S



Ты ебанутый?

Я БЛЯТЬ ХУЕЮ. Люди хотят писать программы на языках которых не существует физически. Ты понимаешь что твоего JS кроме браузера нигде нет?

Взять тот же Node.js, это обычная С программа которая выполняет код написанный с синтаксисом JS.

А теперь представь громоздкость среды которая должна будет целый GUI создавать подобным методом. Нахуй эти костыли нужны, когда уже есть QT/GTK для белых людей или те же Windows Forms/WPF для C#?

Какому мудаку придет на ум писать на яваскрипте ебучий гуи?
997936
#420 #997936
>>997928
Ты сам понял, что написал?
997937
#421 #997937
>>997936

Да. Уже есть managed решение в виде C# отработанного годами для GUI.

Для JS нет нихуя кроме небольшой ноды. JS как языка кроме браузера нигде не существует.

Если так хочется писать менеджед гуи, каким мудаком надо быть чтоб писать на чем то кроме .NET?
997939
#422 #997939
>>997937
Ипать довен. VSCode, Atom и ещё миллиарды десктопных приложений на JS.
997942997954
#423 #997942
>>997939

Говно написанное через анальные костыли и анальные врапперы над врапперами.

Поссал тебе на ебало, смузихлеб
997946
#424 #997945
GUI можно писать только на WinAPI.
Кто не согласен - нахуй из профессии.
997956
#425 #997946
>>997942
Ты можешь бомбить сколько тебе угодно, но это объективная реальность.
#426 #997954
>>997939

>Atom


Лагает при большом количестве открытых файлов/большом объеме кода. Особенно я почувствовал разницу, когда с атома на phpstorm пересел. Просто как с жигулей в ауди.
998070
#427 #997956
>>997945
Долго и муторно
#428 #997969
>>997863
Нету сертификатов, потому что всем похуй. Сертификаты появляются, когда язык начинают немеренно форсить, тот же C#, к примеру.
Я не знаю, какие ты там собрался по крестам сертификаты получать, но я бы туда только шаблонов и запихивал, чтобы на десять тысяч проходило парочку человек (я бы не прошел). Самое лучшее, что ты можешь сделать, так это написать свою какую-нибудь либу или еще что. Сделай на бич-хабе реп и по-маленьку запушивай туда новинки своих творений, через пол-года увидишь, что все, что ты делал - говно.
997989
#429 #997989
>>997969
У меня вообще эта идея с сертификатами появилась, когда возник вопрос, а как вообще определяют подойдет ли кандидат на должность программиста или нет. Ведь кроме стажа по сути сейчас ничего не просят. Допустим, у меня 10 лет стажа, я в это время в том числе и кодил, но как это проверить? Сертификат может дать хоть какой-то срез, хотя, понимаю, что от быдлокодерства это все равно не защитит.

Впрочем не суть, я все же решил просто попроходить различные тесты и понял что пока никуда не гожусь, т.к. местами не понимаю основ. В следующем посте по этому поводу у меня будет вопрос.
997998998000
#430 #997998
>>997989
Ну какого-нибудь Сеньора Помидора посадят рядышком, он будет слушать, что за хуйню ты несешь. Если будешь пиздеть, то точно объебешься. Если контора хуевая, то отправят к ХаРэ (ЭйчАр, как они любят себя называть), бывают такие, что там королева бензоколонки сидит, которая отсеивает в две кучи и, как следствие, без должного надсмотра в саму же контору попадают лютые объебосы, которые могут только промеж булок шурудить своим волосатым языком.
Стаж, это тоже понятие такое, я бы за стаж, конечно, не цеплялся. Но, однако, как минимум год нормального программирования у тебя должен быть за плечами и вот этот год ты постоянно должен заполнять свою головешку полезной информацией и по итогу неплохо было бы посмотреть, что поменялось за год. Я думаю, если ты будешь каждый месяц инспектировать и анализировать свои предыдущие работы и постепенно набивать хоть на чем-нибудь руку, то там понятно станет что и как. Например, тебе станет очевидно, какие ты решения принимал, насколько они подходили или нет в конкретных ситуациях. Все-таки это тоже опыт.
Был тут до меня один человек, который работал года 4. Стаж, по сути, 4 года, а в коде, ну полная хуйня творилась. Человек применял паттерны налево и направо, делал какую-то хуйню там, где это не надо было и (sic!) будо охуительно лицезреть что-то вроде такого:

>> QMap<...,...> m_map;


>> ...


>> if (m_map.contains(key)) { return m_map[key]; }


Блять. Человек 4 года в сраном Qt просидел и даже не осилил контейнеры. Он все хвастался, что постоянно подключает новейшие сборки Qt, но самое веселое было то, что он использовал legacy-подход к работе, который был еще в 4 версии. То есть вместо кошерных ныне соединений при помощи указателей на функции и лямбд, как тут уже не раз обсуждалось, он цеплял все через SIGNAL(...) и SLOT(...). Про охуительную реализацию PIMPL на классы с тремя интовыми полями я вообще молчу.

Вот эти тесты, стаж, сертификаты какие-то, по-мне, честное слово, хуйня полнейшая. Нужно уметь применять навыки а не давить количеством якобы знаний и сертификатов.
#430 #997998
>>997989
Ну какого-нибудь Сеньора Помидора посадят рядышком, он будет слушать, что за хуйню ты несешь. Если будешь пиздеть, то точно объебешься. Если контора хуевая, то отправят к ХаРэ (ЭйчАр, как они любят себя называть), бывают такие, что там королева бензоколонки сидит, которая отсеивает в две кучи и, как следствие, без должного надсмотра в саму же контору попадают лютые объебосы, которые могут только промеж булок шурудить своим волосатым языком.
Стаж, это тоже понятие такое, я бы за стаж, конечно, не цеплялся. Но, однако, как минимум год нормального программирования у тебя должен быть за плечами и вот этот год ты постоянно должен заполнять свою головешку полезной информацией и по итогу неплохо было бы посмотреть, что поменялось за год. Я думаю, если ты будешь каждый месяц инспектировать и анализировать свои предыдущие работы и постепенно набивать хоть на чем-нибудь руку, то там понятно станет что и как. Например, тебе станет очевидно, какие ты решения принимал, насколько они подходили или нет в конкретных ситуациях. Все-таки это тоже опыт.
Был тут до меня один человек, который работал года 4. Стаж, по сути, 4 года, а в коде, ну полная хуйня творилась. Человек применял паттерны налево и направо, делал какую-то хуйню там, где это не надо было и (sic!) будо охуительно лицезреть что-то вроде такого:

>> QMap<...,...> m_map;


>> ...


>> if (m_map.contains(key)) { return m_map[key]; }


Блять. Человек 4 года в сраном Qt просидел и даже не осилил контейнеры. Он все хвастался, что постоянно подключает новейшие сборки Qt, но самое веселое было то, что он использовал legacy-подход к работе, который был еще в 4 версии. То есть вместо кошерных ныне соединений при помощи указателей на функции и лямбд, как тут уже не раз обсуждалось, он цеплял все через SIGNAL(...) и SLOT(...). Про охуительную реализацию PIMPL на классы с тремя интовыми полями я вообще молчу.

Вот эти тесты, стаж, сертификаты какие-то, по-мне, честное слово, хуйня полнейшая. Нужно уметь применять навыки а не давить количеством якобы знаний и сертификатов.
998006998020998074
30 Кб, 1178x665
#431 #998000
>>997989
а вот и вопрос.

Нужно определить что выдаст этот код:
Ответ: ddcccdd

Я пытался в нем разобраться, отнумеровал (1-11) строки, в которых может быть какой-то вывод и затем для лучшего понимания начал сам себе объяснять каким образом получился этот ответ. И в некоторых местах я не понимаю почему и так и прошу объяснить.

1-3. как мне кажется у меня не возникает вопросов. В 1 и 2 выделяется память в стэке и запускает обычный конструктор. В 3 пункте на основе уже имеющейся переменной методом копирования создается новая переменная в стэке.
4. Вызвал у меня легкое непонимание в совокупности с 5 и 6. Почему в 4 при создании ссылки и присвоении ей значения другой переменной (я так понимаю ссылка теперь будет указывать на стэк, в котором хранится переменная с) никакой конструктор не вызывается.
5-6. При этом, если переменная объявляется и тут же инициализируется значением другой переменной того же типа, то задействуется конструктор копирования (пункт 5), но при этом, если переменная была объявлена заранее и ей присваивается значение другой переменной, то никаких конструкторов не задействуется (пункт 6)
7. При создании указателя выделяется память в хипе размером с переменную типа А, немного сбивает А(с). Возникает вопрос, при этом в эту память записывается что-то?
8. Разница с предыдущим в том, что передается ссылка. И вот тут у меня самый большой вопрос. Ссылка указывает на стэк, а указателю нужен хип, верно? В этой строке работает конструктор копирования, но я не понимаю почему.
9. со статик кастами я плохо знаком, так что тут у меня ни ответов ни вопросов.
10. вопросов не вызывает
11. Функция принимает 2 параметра по ссылке. В первый параметр передается цифра, и вот тут я снова не понимаю почему работает обычный конструктор, а не копирования. Второй параметр выглядит понятнее, и, как я подумал, там тот же механизм, что и в пункте 3, но нет, тоже обычный конструктор.

Кто-нибудь сможет объяснить, пожалуйста, где я не прав и ответить на вопросы.
10017971001800
#432 #998006
>>997998
Ещё год назад я делал лабы на QT5, про новый синтаксис вообще ничего не слышал в то время. В официальных доках всё было по-старому.
Ничего удивительного, что чувак про него не знал.
998022
#433 #998011
Пишу программы для расчета зарплаты сотрудников. Расчет основан на стаже работы, количестве подчиненных и верхнем пределе надбавки. Стаж и количество подчиненных используются с коэффициентами.

Есть абстрактный класс для сотрудников worker.
От worker наследован head - абстрактный класс для всех сотрудников, которые могут иметь подчиненных.
employee : worker не может иметь подчиненных.
manager : head и sales : head могут иметь подчиненных.

Функция расчета зарплаты определена в worker виртуальной. В head определена вспомогательная функция расчета зараплаты с учетом числа подчиненных и поле std::set подчиненных.

Я хочу избавиться от дублирования кода, потому что функция расчета везде почти одна и та же, она в employee и она же в manager и sales отличается только тем, использует ли она число подчиненных.

Можно сделать ее общей для всех и в классе employee число подчиненных использовать с коэффициентом 0.

Как это лучше реализовать? Для этой функции нужен set подчиненных, а определять его в worker как поле я не хочу, потому что worker - общий класс, и не все сотрудники могут иметь подчиненных.
#434 #998020
>>997998

>>> QMap<...,...> m_map;


>>> ...


>>> if (m_map.contains(key)) { return m_map[key]; }



Ошибка не очевидна без контекста. Например: обрабатывается поток данных, и на каждом шаге пары могут быть вставлены и исключены, и если ключа нет, то может возвращаться какое-то "пустое" значение (не обязательно default-constructed).

Если тип функции - референс, то уже смешнее, конечно.
998022
#435 #998022
>>998020
В противном случае он возвращал объект по-умолчанию, если мне память не изменяет. Значения он только вставлял. Если мне память не изменяет, это было что-то вроде кэша уже использованных данных или как это можно назвать.

>>998006
Этому синтаксису уже несколько лет
998053
#436 #998036
Почему в VS2015 отваливается дебаг? Breakpoint'ы не срабатывают, код выполняется. Запускаю в режиме отладки, гугл не помогает.
998040
#437 #998040
>>998036
всё, неактуально. это я д
#438 #998053
>>998022
Если это мемоизация, как ты написал, то в чем проблема в приведенном участке? Так же и делается.
998054998056998399
#439 #998054
>>998053
Нахуя искать дважды?!
998095
5 Кб, 572x134
8 Кб, 813x110
#440 #998055
Почему код с 1.png в rezultAddress заносит 0x0100AA00 а не 0x0040AA00?
998058
#441 #998056
>>998053
Короче, фиксю по-быстрому. Уже нихуя не помню, если до репа завтра доберусь выложу это чудо.
#442 #998058
>>998055
Потому что результат сложения числа с указателем - это указатель + sizeof(тип)*число
#443 #998070
>>997954
Никто не говорит, что не лагает. Да, это жрёт память и ЦП. Но зато быстро (а значит и дёшево) и удобно (наверное, я сам не пробывал).
73 Кб, 992x490
#444 #998074
>>997998

>>> QMap<...,...> m_map;


>>> ...


>>> if (m_map.contains(key)) { return m_map[key]; }


>Блять. Человек 4 года в сраном Qt просидел и даже не осилил контейнеры.


Ну или ты не осилил.
998090998399
#445 #998090
>>998074
Жёстко ты его.
#446 #998095
>>998054
Потому что для типов, которые не имеют "дэфолтных" значений это единственный вариант.
По мне так это предложение к обсуждению и улучшению, а не пиздец ошибка. Можно в optional значение завернуть например. Придираешься ты.
#447 #998114
Тамплиеры, помогите. Хочу вызвать LoadLibraryA по адресу в виртуальной памяти, при этом адрес я хочу получить сам, основываясь на данных таблицы импорта скомпилированного PE файла и ImageBase, который я получаю через FindImageBase(). Я скомпилировал приложение (код 1.png), вытащил из получившегося PE RVA функции LoadLibraryA. Как я понял, это RVA, в который будет записан VA той самой функции, но тем не менее получаемый адрес отличается от того, что я получаю по auto x = LoadLibraryA. ЧЯДНТ?
998115998119
37 Кб, 836x345
37 Кб, 950x509
#448 #998115
>>998114
Ну ебать, картинки как обычно забыл.
#449 #998119
>>998114
Зачем делать именно так? Конкретно по вопросу ничем не помогу, это уже даже не байтоёбство, а какой-то изврат.
998123
#450 #998121
Есть темплейт, представляющий собой mutex-ограниченное std::queue<unique_ptr<T>> с паблик Push, Pop и is_Empty.

Понадибилось в другом классе иметь референсы на хранимые объекты.
Можно ли в одном темплейте объединить возможность работы как с unique_ptr<T>, так и с &T или вообще с <T> напрямую? Или городить отдельный темплейт для этого?

Заставлять его хранить shared_ptr<T> тоже не хочу, потому что многие классы пользуются этой же очередью для хранения и уникальных объектов тоже.
998131998218
#451 #998123
>>998119
Это подготовительные меры. Мне главное понять, как основываясь на ImageBase и RVA в таблице импорта получить VA, по которому можно вызвать LoadLibraryA. Разумеется, в реальном приложении всё будет несколько иначе.
998210
#452 #998131
>>998121
Ну так что тебе мешает получить из unique_ptr ссылку на объект?
998136
#453 #998136
>>998131
unique_ptr на объекты хранятся в map другого класса (выше по иерархии), он же управляет временем их жизни.

Дочернему классу он их передает для обработки (временно), гарантируя, что они никуда не исчезнут и не будут удалены до конца обработки. Дочерний класс их не хранит, соответственно передавать shared_ptr смысла нет. При этом передает он их через "реалтаймовую" очередь, для которой и создан темплейт.

Изначально в проекте использовались только очереди с unique_ptr и проблем не было. Теперь понадобилось использовать тот же класс "живой очереди" для любых объектов или референсов на них и вопрос в том, можно ли универсализировать темплейт.
998139998145
#454 #998139
>>998136
В голову пришло только декларить все необходимые queue в твоём классе, а потом использовать нужные, оверлоадя все Pop и Push, либо указывая в конструкторе варинт использования.
#455 #998145
>>998136
Хочешь сделать контейнер для любых типов?
Ну можешь хранить всё добро в виде объектов одного базового класса на всех, вроде как так можно делать.
Я не знаю, почему, но мне кажется, что тебе может помочь паттерн Visitor.
998146
#456 #998146
>>998145
Технически, он и так работает для базовых типов, но способы передачи объектов и указателей отличаются, а значит тело функции должно понимать, что перед ней, и вызывать соответствующие методы (std::move для unique_ptr, прямая передача для &Object).

Сами объекты мне там хранить не нужно вообще никогда, либо умные указатели, либо референсы.
998148998218
#457 #998148
>>998146
Мне кажется, тебе реально тут Visitor может помочь.
#458 #998149
Вот, если лагает последняя студия, то какую поставить? Слышал, что более старые вменяемые. Какие именно, и где их достать?
998154
#459 #998154
>>998149
Вот же тебе писали -> >>997917
998156
#460 #998156
>>998154

Хорошо, спасибо
#461 #998163
>>997920
Чот хуево. Я сейчас на 2015, некоторых фич с++17 уже не хватает.
998164
#462 #998164
>>998163
Так не вышел ещё стандарт.
998165
#463 #998165
998174
#464 #998174
>>998165
Так там же он вроде есть в experimental, не?

Даже если нет — возьми из буста/фолли/кути или что ты там юзаешь (да да, привыкай тащить в проект кучу говна руками, это очень жизненный опыт шиндовс-программера).
#465 #998176
Либо напиши свой опшен, там 20 строк кода.
998180
#466 #998180
>>998176
Оно-то да, но в стандарте приятнее.
#467 #998210
>>998123
пиздуй в с-тред
#468 #998218
>>998121
>>998146
Используй std::move для всех проходящих мимо объектов.
#469 #998220
Есть такая проблема
https://gist.github.com/tjarrow/d9b447cc48c663a7343b0bd7601b831e
Это цифровая сортировка по 16-чной записи
почему-то упорно не хочет работать с количеством элементов, меньше чем 10
дебажил долго и упорно - так и не разобрался
подскажите, где ошибка
998224998225998238
#470 #998224
>>998220

>почему-то упорно не хочет работать


Когда к доктору приходишь, тоже говоришь "нога упорно не хочет ходить"?
#471 #998225
>>998220
Ты это сам написал? Подозреваю, что нет.
Падает, потому массив хранит разряды чисел. В стандартном 32-битном целом их как раз 10.
998232
#472 #998232
>>998225
ты про mas_col ? он же вроде и хранит 10 разрядов
998234
#473 #998234
>>998232

>mas_col = new int[10]; //Здесь падает


>почему-то упорно не хочет работать с количеством элементов, меньше чем 10


Слющай, ну я и подумал, что когда 9 тут ставишь, программа умирает. Мол, что за глупые вопросы.
#474 #998238
>>998220
http://ideone.com/e2OFVp

ЧЯДНТ?

http://ideone.com/xDoUjw - scanf("%x",...) читает в unsigned int, а не int.
998244998249
#475 #998244
#476 #998249
>>998238
ничего не понял. проблема в scanf ?
999262
#477 #998252
Обращаюсь к знатокам
Есть некоторый фрагмент кода, который считает строки в файле хз, есть ли функция для этих целей в стандартных библиотеках, суть не в этом
Почему когда я вставил этот же фрагмент в другую прогу все переменные забрал, библиотеки подключил цикл начал зацикливаться, хотя в той, другой проге, все работает идеально?
998255
#478 #998255
>>998252
Обращаюсь к знатокам
Есть некоторые педали, который вращает колеса хз, может другие вели сразу с педалями, суть не в этом
Почему когда я вставил эти педали в другой велик все тросики забрал, колёса подключил рама начала зацикливаться, хотя на том, другом велике, нормально ездил?
998256
#479 #998256
>>998255
ясно
какой язык, такие и обезьяны
998257
#480 #998257
>>998256
С таким вопросом тебе бы в любом треде по ебалу дали.
998261
#481 #998261
>>998257
о дибил
ты знаешь что через интернет в ебало дать невозможно?
998264
#482 #998264
>>998261
То-то ты до сих пор кровоподтёки потираешь.
#483 #998399
>>998074
Ох ты блять, ну спасибо. Вопрос повторяется. Нахуя искать дважды?!
Про второй пример со значением по-умолчанию, я уже сказал, что нужно было делать так или через .find и проверкой итератора (первое проще).

>>998053
Оказалось, я бугуртил даже не из-за этого, он просто пихал все в контейнер и не использовал его вообще. Видело как рудимент, получается. Наверно, да, не такой уж и сильный косяк.
des #484 #998406
Годная реализация шифрования des(triple des) у кого-нибудь есть?
Кажется, что уже сто вариаций переробовал, все дают разные результаты шифрования с ключом. И при этом ни один не дает правильного. За правильность взял то, что дает большинство бесплатных сприптов в онлайне, найденных по запросу в гугле "des encode online".
Интересует именно обособленная реализация, а не часть большой библиотеки, которую придется тащить с исполняемым файлом.
998415998437
#485 #998415
>>998406
В каком режиме нужно?
998419
#486 #998419
>>998415
ECB
Самый простой.
998421
#487 #998421
>>998419
На сисярпе вроде писал DES в ECB. Щас завтрак приготовлю и гляну, если в шарпе поковыряться не брезгуешь..
998444
6 Кб, 435x189
#488 #998423
VS2017, если что. Что мне с этим делать? Где достать эти библиотеки?
998918
#489 #998437
>>998406
Охуительный критерий правильности.
Тесткейсы botan проходят на этом онлайн декодере - http://des.online-domain-tools.com/

Тесткейсы (в hex-формате): https://github.com/randombit/botan/blob/master/src/tests/data/block/des.vec

Код несильно зависит от остальных компонент ботана, они нужны только для унификации интерфейсов - https://github.com/randombit/botan/blob/master/src/lib/block/des/des.cpp

Можно пересобрать библиотеку, отключив всё лишнее -
https://github.com/randombit/botan/blob/master/src/lib/block/block_cipher.cpp
998444
#490 #998444
>>998421
Давай, интересно.

>>998437
Гляну, окей.
998453
#491 #998453
>>998444
А я тебя наебал, нет у меня DES. У меня ближайшее к DES это AES и Magma только.
#492 #998473
что читать что смотреть что бы устроиться c++ программистом? какие технологии изучать
998474
#493 #998474
>>998473

C++-программистом разве работают? Я думал, что это язык для программисткого хобби.
998475
#494 #998475
>>998474
а разве не работают? так что там надо уметь что бы взяли на работу
998478
#495 #998478
>>998475
STL, Boost, опционально Qt, матан, алгебра, физика, геометрия, теория чисел, криптография
998479
#496 #998479
>>998478
stl и boost полостью? а из матана физики геометрии что вообще может пригодиться?
998485
#497 #998485
>>998479
Ответ на оба вопроса: смотря на что ты претендуешь и куда идёшь устраиваться. Проблема крестов в плане трудоустройства в том, что их уже не используют повсеместно. Заводы автоматизируют на С/машинном коде/асме, энтерпрайз на джаве/C#, web под asp.net/php. Остаются всякие нефтяные/геологические компании, где шарп/джава не подходит по производительности, а C/asm/op-code не подходит из за сложности разработки. Ну gamedev сюда можно приплести, в том же UE пишут на крестах да и юнити вроде можно заставить их жрать, браузеры, короче долгостроящиеся приложения, обрабатывающие большой сетевой трафик и/или системные функции. Вообще, мне кажется, что в разработке большого приложения голых плюсов будет недостаточно, и придется обращаться к сторонним библиотекам, ибо без них ты работаешь уже не над приложением, а над созданием собственного велосипеда для крестов, грубо говоря, создаешь себе инструмент, а не инструментом создаёшь продукт. Поэтому, КМК, stl может и нахуй шлют, а boost/Qt их аналоги используют активно, поэтому не лишним будет хотя бы скачать и посмотреть чё в них есть.
998537998542
#498 #998537
>>998485
ну вообще я бы хотел просто работать над каким нибудь десктоп приложением, но так походу не получиться, тот же на пример скайп, мб браузер ну и тд, что можешь посоветовать, яп сменить мб, или технологии под c++ подходящие под это
998659
#499 #998542
>>998485

>stl может и нахуй шлют


Поясни ньюфагу почему очень многие пишут, что stl - говно и вообще не нужен? Хотя сам Страуструп вроде пишет, что лучше использовать стандартную библиотеку, чем писать свои велосипеды.
998544998612
#500 #998544
>>998542
Какой язык, такая и стандартная библиотека.
#501 #998547
Какие есть аналоги для громоздкого switch, например, если я разбираю пришедшие сетвые пакеты и по ключу определяю, что делать с данными?
998551998556998561
#502 #998551
>>998547
Ключи представляют собой упорядоченные числа и по ключу вызывается функция из массива функций? И неважно сколько разных ключей, на быстродействии это уже никак не скажется.
#503 #998556
>>998547
ЕМНИП, даже в крестах есть хэш-таблицы и лямбды.
#505 #998578
>>998561
Не вижу, как ему этот паттерн поможет.
#506 #998590
>>988927

>Подсветка илитная.


У нее название есть?
#507 #998612
>>998542
В STL есть алгоритмы и много довольно полезной дичи, но контейнеры имеют не совсем удобный интерфейс. Это понятно, что комитет пытается облегчить библиотеку как только можно и сделать ее эффективнее, но от этого страдает функционал и принятие мелочей занимает очень долгое время, потому что нахуя иметь встроенный поиск в std::map с возможностью возврата значения по-умолчанию, если элемент не найден, если можно взять std::map::find и потом сравнить std::map::end.
НО:
Я до сих пор не могу понять, почему комитет еще не принял методы по изменению порядка следования байт, чтобы переводить всякую дичь без помощи htons/ntohs и т.д. Почему нет потоков для работы с бинарными, именно бинарными, а не текстовыми данными, как QDataStream, например и приходится пользоваться boost-ами или cereal, к примеру (хоспаде, благослови создателя последнего, потому что это охуенно).
Почему нет рефлексии времени компиляции, ведь это, к слову, не такая уж и непосильная задача для компилятора, который во время работы уже имеет на руках синтаксические деревья. Где sting_view или какая-нибудь подобная дичь. Почему создателям стандарта понадобилось около 20 лет, чтобы понять, что неплохо бы иметь метод std::string::data, который возвращал бы указатель на НЕКОНСТАНТНЫЕ данные.

ВСЕ ПРИНИМАЕТСЯ ОЧЕНЬ МЕДЛЕННО. Кажется, будто бы в комитете сидят ебаные хипстеры, помешанные на создании каких-то ненужных выебонов в языке, вместо того, чтобы требовать наличия хорошей библиотеки.
998625998717998719
#508 #998625
>>998612

>потому что нахуя иметь встроенный поиск в std::map с возможностью возврата значения по-умолчанию, если элемент не найден, если можно взять std::map::find и потом сравнить std::map::end.


operator[]
998633
#509 #998633
>>998625
Он вставляет элемент, если его нет. А тут подразумевается случай, когда вставлять отсутствующий элемент ненужно.
#510 #998659
>>998537

>посоветовать


смотря сколько тебе лет, есть ли стабильный доход, чем до этого занимался
#511 #998717
>>998612

> Почему нет потоков для работы с бинарными, именно бинарными, а не текстовыми данными


http://en.cppreference.com/w/cpp/io/basic_istream/read
998908
#512 #998719
>>998612

> нахуя иметь встроенный поиск в std::map с возможностью возврата значения по-умолчанию, если элемент не найден


Для того, чтобы не бросать исключение из []
998726
#513 #998726
>>998719
Это риторический вопрос был. Со знаками препинания у меня проблемы, вот тут то я и обосрался. Но, в общем, ты понял мою идею. И даже не в эксепшене дело, хотя он мог бы и тут вывалиться в зависимости от того, поддерживает ли тип исключительно копирование (как правило, move-семантака не кидает исключений, я такого не встречал). Это просто удобно.
998815
#514 #998793
Ананасы, где лучше вставлять Doxygen`овскую документацию: в хидере или в *.cpp?
#515 #998815
>>998726

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


Зачем для создания несуществующего значения копирование?
998908
#516 #998888
Можно ли вызвать метод класса в отдельном потоке из другого метода этого же класса, без использования static?
#517 #998890
>>998888
змейку небось пишешь?
998892
#518 #998892
>>998890
Нет.
#519 #998901
>>998888
Я потратил немало времени, и нашёл способ только костыль использовать. При создании треда через WinAPI точно ты ему передаёшь параметр в виде void*. Я в качестве аргумента использовал this, а функцию вообще вынес за класс.
998920
#520 #998908
>>998815
У контейнеров Qt есть метод .value, который возвращает значение по-умолчанию в случае отсутствия записи в контейнере. Семантика передачи значения по-умолчанию там копирующая, поэтому будет вызван копирующий конструктор или присваивание. Если бы был метод с семантикой передачи rvalue-значения по-умолчанию, тогда, при наличии перемещающего конструктора или/и присваивания, при передаче временного объекта вызывался бы этот метод.

>>998717
Сырое я могу и через c-функции написать, только стало ли удобнее сереализовать целый объект при помощи метода write. Я так не думаю. Классов для работы с исключительно бинарными данными нет.
#521 #998909
>>998888
Кто тебе запретит?
124 Кб, 1391x598
#522 #998910
>>998888
Это ты?
999036
#523 #998918
>>998423
Переустанови виндовс. Виндовс сама не переустановится. Переуставнови её сейчас. Переустанови её ещё раз. Поставь раком и опять переустанови.
#524 #998920
>>998901
Знаете, что такое лямбда-функция?! Прекрасное расширение языка. Аллах акбар!
В void он кастует, ну как-же. А потом, поди dynamic_cast-ом получаешь указатель на нужный объект.
999038999070
#525 #998971
https://pastebin.com/FjFEtd42
Ломается после надписи сломайся здесь. Как это вообще возможно?
Down это массив указателей на тот же тип, что и сам Tree_node_source.
Valgrind выдает в следующей строке
Conditional jump or move depends on uninitialised value(s)
Н = 1 в момент поломки. Хотя до этого н = 0 не было равно. Но во многих местах такая же конструкция с фор и все работает.
Как думаете, в чем может быть дело?
998972
#526 #998972
>>998971
Ой, нет, ошибка. Это размер вектора(кстати, это вектор, а не массив) = 1.
998973
#527 #998973
>>998972

>вектора Down


Фикс еще один
#528 #999036
>>998910
Нет.
Я вообще редко вопросы задаю, и обычно нахожу в гугле, а если не нахожу, то спрашиваю в /pr.
#529 #999038
>>998920

>Знаете, что такое лямбда-функция?!


Расскажи.
#530 #999070
>>998920
reinterpret_cast
#531 #999104
Слышал, что большие куски кода лучше выносить за рамки блока if, оставляя в нем лишь возврат в случае ошибки. типа не
if (b==a)
{
//500 строк кода
}
else return false;
а
if (b!=a)
return false;
//500 строк кода

Это как то связано с особенностями компиляции или просто делается ради повышения читаемости кода?
999158
#532 #999158
>>999104
Для повышения читаемости. return early pattern
#533 #999172
https://pastebin.com/pfEukDRn назвать Tree.h
https://pastebin.com/eZMj2bqB файл с классом, назвать User.cpp
https://pastebin.com/ie3JY8z9 main-файл, я назвал Server.cpp
Это своебразная база данных. Все происходит в классе User. На вход подается команда (на вход в смысле явно прописывается в main), парсится, а затем выполняется. База данных имеет структуру дерева иерархии. То есть есть например
Россия Правительство Путин.
Здесь записью является только путин. У каждой структуры Tree_node( вершина дерева) есть пометка IsAHum_ которая показывает запись это или точка в дереве иерархии. Вектор Down в структуре это вектор со ссылками. map Work это набор данных, который должен быть только у записей. То есть у Путина есть, а у Правительства нет.
Теперь о проблеме.
По отдельности команда SELECT и PRINT работают. SELECT каждый раз ищет в резульате предыдущего поиска (SELECTа). Изначально за результат предыдущего поиска берется все дерево. Причем поиск производится по дереву иероархии. То есть можно выбрать все записи, которые входят в правительство по запросу:
SELECT Правительство
Обходом дерева получаются ссылки на все вершины дерева предыдущего поиска, имя которых равно поисковому запросу, после чего эти ссылки помещаются в вектор Down специального экземпляра структуры Tree_node Buf_, который является свойством класса User.
То есть происходит следующее
https://pastebin.com/M71AXcH7
Программа падает, когда мы пытаемся сделать PRINT после поиска, а именно в момент обхода вершины дерева Top_, а именно его вектора со ссылками Down.
То есть если попросить напечатать содержимое Top_ до поиска, то все будет ок, такк как там просто копия всего дерева, но если выполнить селект, а уже потом попытаться вывести все, то в файле User.cpp после строки 52, программа упадет. Не могу понять в чем дело.
https://pastebin.com/iduBst2c Файл с базой. Назвать Base.txt
999510999803
#534 #999262
>>998249
Проблемы вообще нет, оно работает.
Проблема в сканф проявится только с большими числами.
#535 #999282
>>998888
Запросто, только снихронизацию не забудь сделать.
999452
#536 #999286
Смотрю, уже гет скоро будет. Кто решил брать?
999289
31 Кб, 317x372
#537 #999289
>>999286
Предлагаю нового маскота
#538 #999421
2ch, я не могу понять, почему в char массив помещается русская C строка (char a[] = "Строка";) при кодировке UTF8? Проверяю каждый символ в массиве, он продолжает весить 1 байт, хотя исходя из UTF8 он должен весить 2 байта, в чём дело? Для этого же вроде нужен wchar_t, разве нет?
999529999552
#539 #999452
>>999282
Это понятно.

Спасибо.
#540 #999457
В чём разница между reinterpret_cast<T>(value) и просто (T)value?
999463
#541 #999463
>>999457

>reinterpret_cast


Тем, что так не надо делать, например
999469
#542 #999469
>>999463
Чому? Натыкался на мнение, что сишный каст ололо небезопасный и его аналогом является reinterpret_cast<T>()
999483
#543 #999474
Меня тут ругают за использование realloc. А в чём собственно говоря проблема? Выделять новый кусок и туда копировать каждый раз через new/delete? - Зачем?
Что-то я побродил по сети, никакой аргументации не нашёл. Наоборот что-то про люниксы и хорошее быстродействие realloc, ну и не советуют одновременно new /malloc использовать.
999483
#544 #999483
>>999469
Сишный каст - это не реинтерпрет каст, это примерно static_cast. reinterpret_cast - это смена типа без смены содержимого. Он должен использоваться только в платформозависимом коде для грязных трюков.
http://en.cppreference.com/w/cpp/language/explicit_cast
Дальше сам гугли.
>>999474
Проблема только в том, что перевыделенная память может иметь другой адрес со всеми вытекающими.
999487
#545 #999487
>>999483
Как будто через new/delete адрес не может измениться. Глупости, значит.
999881
#546 #999510
>>999172
Бамп вопросу, третий день сижу, не могу понять что происходит.
999547
#547 #999529
>>999421
Это магия.
999543
#548 #999543
>>999529
Так и знал что для двачедаунов компьютер это не более чем магическая коробка.
999548
#549 #999547
>>999510
Выложи архивом, лень качать отдельно и переименовывать.
999554
#550 #999548
>>999543
Если знал, то что спрашиваешь тут?
#551 #999552
>>999421
Где ты тут utf8 видишь?
#552 #999554
999803
#553 #999605
Такой вопрос.
После инжекта в процесс своей библиотеки и получения адреса функции, когда повесил хук на функцию, я могу вызвать в хуке оригинальную функцию, или будет вызвана уже хукнутая функция? Значит ли это, что нужно описать заранее оригинальную функцию и уже в хуке использовать её?
999622
#554 #999622
>>999605
Обычно в теле функции, которой передается обработка, сначала вызывается оригинальная функция, а потом твои добавки в неё.
999635
#555 #999635
>>999622
А, понял, все нормально значит.
#556 #999642
Читаю книжку из шапки ("Принципы и практика использования C++") и по мере прочтения накапливаются вопросы, на которые книга не даёт. Я их тут буду задавать партиями или сначала дочитать и попробовать всё до последней главы?
999648
#557 #999648
>>999642
Задавай
10000651000747
14 Кб, 262x363
15 Кб, 391x355
19 Кб, 370x360
#558 #999776
Аноны, нужна ваша помощь. Решил я запилить игруху в консольке, типа файтинг.
Пока что только познаю ООП и у меня возникла проблема. Мой друган, который шарит в C#, рассказал мне, что в С++ можно делать переопределение функции.

Итак, у меня есть один базовый класс Player, в котором есть функция Attack() {}, а также есть два производных класса Knight и Wizard. У этих производных классов тоже есть функция Attack, в которой выводится пока что просто сообщение о том, что они таки нанесли урон. Вобщем нужно сделать так, чтобы в зависимости от созданного класса игрока (рыцарь или маг), вызывался нужный производный класс класса Player. То есть я создаю объект класса Player, но связанный с определенным производным классом, затем вызывается функция Battle для нужного производного класса. И если я выбрал рыцаря, то выводится сообщение для рыцаря, и так же для мага.
999805999809
#559 #999803
>>999554
>>999172
Анончики, ну че, не понятно что там не так?
999816
#561 #999808
>>999805
Можешь вкратце объяснить? Просто мой ингриш не настолько крут, чтобы статейки специализированные читать
999830
#562 #999809
>>999776

>создаю объект класса Player, но связанный с определенным производным классом, затем вызывается функция Battle для нужного производного класса. И если я выбрал рыцаря, то выводится сообщение для рыцаря, и так же для мага.


Ты или делаешь два разных класса наследованные от игрока с разными функциями, или если ты хочешь именно один класс с разными в зависимости от инициализации функциями, то включи в свой класс ещё одно поле-подкласс или указатель на функцию, которой и будут различаться твои player-объекты после инициализации.
999843
#563 #999816
>>999803
Это пиздец, а не код.
999817
#564 #999817
>>999816
Сорри, я пока только учуссь, скажи что не так, перепишу получше. Алсо есть более чистая версия без отладочных выводов.
999820
#565 #999820
>>999817
Начнём с того, что ты сохраняешь в вектор адреса локальных переменных.
User::Select(Tree_node Top_node_source, string Rule)
{
...
Buf_.Down.insert(Buf_.Down.end(), &Top_node_source);
...
}

Дальше разгребать скучно.
999821
#566 #999821
>>999820
Ага, ну да, ошибка, странно что прога падает именно тут, но сейчас попробую поправить.
алсо подскажи, как писать лучше?
999905
#567 #999830
>>999808
Код после Virtual members.
Лучше бы ты с жабы начал. Без системы в крестах можно мозг сломать.
999843
#568 #999843
>>999809
>>999830
Все, разобрался, спасибо. Ну там конечно и синтаксис с этими ебучими указателями. Ваще не представляю, как мне их понять
999847999881
#569 #999847
>>999843
Ищи информацию, в интернете на русском всё есть. Не пытайся понять сам.
#570 #999870
Я знаю, что вам похуй, но и мне похуй на то, что вам похуй.
Написал я тут дипломчик, описываю прогу разработанную, а из глаз кровища льётся. Это такой пиздец, что его людям показывать стыдно. Жуть, просто жуть
#571 #999881
>>999487
Поздравляю, теперь тебе нужно не только уметь создавать/удалять объект, но ещё и уметь ресайзить его. И объекты бывают посложнее, чем массивы чаров.
>>999843
Тебе будет понятнее, если сказать тебея, что указатель - это то же самое, что адрес? И чло сложение числа с указателем - это указатель, сдвинутый на это число позиций относиттельно его типа? Что там понимать-то?
#572 #999895
Двач, эта сука меня заебала. Хочу считать бинарный файл в char, но внезапно, ебучий ifstream отказывается читать после первого нулевого байта, несмотря на то, что я явно указываю размер который определен верно через тот же ifstream в ifstream.read(). Разумеется там есть нулевые байты, это же кусок .exe файла. Короче, как мне полностью запихать в char содержимое бинарного файла, а не до 1 нуля? Там предлагают шаманские методы через string, но звучит и пахнет как костыль.
999900
#573 #999900
>>999895
Открой файл в с флагом binary, перейди в конец файла, узнай позицию, вернись в начало файла, выдели память, считай файл через read. Вроде должно работать.
#574 #999905
>>999821
Что-то я устал от назойливых новых ньюфагов.
#575 #1000024
>>996619 (OP)
Вопрос с++ господам.Есть задача про уравнение двух чисел джвумя заранее заданными операциями(Если это возможно). Как уравнять пару, еще более-менее понятно, но как определить неуравниваемую пару чисел?
Код здесь http://ideone.com/e9J0WG
Условие здесь:

Результатом применения операции 1 к паре натуральных чисел (a, b) является пара натуральных чисел (a+1, 2×b). Результатом применения операции 2 к паре натуральных чисел (a, b) является пара натуральных чисел (2×a, b+1).
Требуется за как можно меньшее число шагов с помощью операций 1 и 2 получить из пары (X, Y) пару равных чисел.

Результат записать как последовательность из единиц и двоек. Если "уравнять" данную пару невозможно, вывести 0.
33 Кб, 490x488
14 Кб, 501x135
#576 #1000065
>>999648
1.
В книжке показали классы и сказали несколько интересных слов, я не мог не заинтересоваться и даже забил бы на них до главы про классы, но в результате экспериментов получил ненароком такое. Картинка. То есть я беру указатель на класс, выделяю под него память и явно вызываю конструктор (Хрен его знает как там это правильно сделать, написать q->my(); оно мне не позволяет, да и может быть конструкция q=my() уже сама по себе выделит память (хотя в этом случае я достиг падения программы, в отличие от способа с malloc), я пока с этим не разбирался и разберусь потом. Суть в другом.). И потом в коде обращаюсь к массиву в классе. Только вот судя по консоли у меня деструктор вызывается раньше этого обращения. Какого чёрта он там вызывается?
2.
Если в самом начале я напишу просто my q;, то всё работает корректно, деструктор вызывается после моего обращения.
Возникает вопрос, а как тогда объявить переменную-класс не вызывая конструктор вообще? По запросу "Как не вызывать неявно конструктор по умолчанию при объявлении класса?" ничего найти не могу. Вот я просто хочу объявить класс - то есть иметь переменную с нужными мне полями и вручную с ними работать внутри функции не вызывая конструктор вообще - как мне это сделать?
3.
В си структуры были. Я слышал, что в с++ теперь можно методы в структурах делать, так и оказалось. Предположил что структуры тем и отличаются, что у них конструктор не будет вызываться. Ан нет, абсолютно аналогично работает. В чём тогда различие структур и классов ныне? Тоже не могу нигде найти.
10000991000162
#577 #1000099
>>1000065
Первая картинка: my() - это конструирование временного объекта. Оператор = вызывает либо move constructor (если стандарт 11+. Деструктор не вызывается) либо copy constructor (похоже на твой случай). Память освобождается, в *q остаётся неправильный указатель, ты разъебошил ногу.

Если ты хочешь присваивать объекты с указателями, тебе нужно сбацать правильный copy constructor и move constructor.

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


Ты пытаешься выстрелить себе в ногу. Если ты хочешь, чтобы при создании переменной ничего не происходило, просто объяви пустой конструктор (или оставь дефолтный). RAII, парень.

3. Структуры отличаются только тем, что в них все члены public.
1000111
#578 #1000101
Олсо, дефолтные конструкторы перемещения и копирования определяются компилятором не всегда.

http://en.cppreference.com/w/cpp/language/move_constructor
http://ru.cppreference.com/w/cpp/language/move_constructor
http://en.cppreference.com/w/cpp/language/copy_constructor
http://ru.cppreference.com/w/cpp/language/copy_constructor
1000111
#579 #1000111
>>1000099>>1000101
Понятно, спасибо.

>RAII


А удобно на самом деле, пусть не совсем очевидно.
#580 #1000162
>>1000065
1. malloc только выделяет память указанного размера, но не вызывает конструктор, если хочешь пердолинга, то делай placement new, например: http://ideone.com/wdHEjl
А лучше всего делать стандартными средствами при помощи new и delete, а еще лучше использовать умные указатели.

2. То, как ты это назвал, это называется выделение в "статической" области памяти, то есть по-факту структура описания самого объекта размещается в стеке, если же твой класс содержит поля, которые создаются в куче, то они будут созданы в куче, как бы ты этого не хотел. При выходе из области видимости переменной, размещенной в стеке, для нее вызывается деструктор, причем в порядке, обратном их декларации. То есть, например:

>> {


>> my a;


>> my b;


>> ...


>> }



Сначала будет вызван деструктор для b, затем для a. Это вполне логично.
Если ты создал объект в куче (при помощи new, например), тогда деструктор для фактического объекта вызван не будет, вызван будет (если это вообще вызовом можно назвать, по факту, просто указатель стека сместится или данные перезатрутся в зависимости от контекста) деструктор для переменной-указателя, а не на то, что она указывает. То есть в следующем случае:

>> my *a = new a();


Ты имеешь две сущности. Первая - переменная a, которая является указателем на объект в куче. вторая - непосредственно объект a в куче. При выходе a из области видимости будет вызван деструктор именно для ПЕРЕМЕННОЙ-УКАЗАТЕЛЯ, а НЕ для ОБЪЕКТА. Поэтому, если ты не передал куда-то указатель для дальнейшего использования или не вызвал delete вручную, тогда, поздравляю, ты проебал память.

3. Различие структур между c и c++ состоит в том, что в обычном c кроме членов-данных ничего в структуру затолкать нельзя. В лучшем случае, если ты захочешь сотворить подобие какого-то класса, тебе будет создать члены-данные, являющимися указателями на соответствующие функции. Получится своеобразный виртуальный класс. На деле так делают изредка и просто прибегают к созданию заковыристых имен для функций на все случаи жизни. Алсо в цэ ты можешь при инициализации структуры указывать названия заполняемых полей явно, например:

>> struct my_struct s = { .param_a = 1, .param_b = "char str" ... };



В крестах такую хуйню не провернешь уже, потому что, как говорят старики из комитета, нахуя вам такой синтаксис, если родина дала конструкторы.
В крестах же отличие структуры от класса минимально и заключается лишь тем, что по-умолчанию в структуре все члены открытые (являются public), в то время, как в классе они по-умолчанию private. Деструктор, конструктор, если они не объявлены, генерируются автоматически, как, впрочем, и некоторые другие конструкторы и присваивания (но там есть множество исключений).
Алсо при объявлении шаблонов ты можешь использовать только ключевое слово class или typename, хотя это никакого отношения к структурам, фактически, и не имеет.
#580 #1000162
>>1000065
1. malloc только выделяет память указанного размера, но не вызывает конструктор, если хочешь пердолинга, то делай placement new, например: http://ideone.com/wdHEjl
А лучше всего делать стандартными средствами при помощи new и delete, а еще лучше использовать умные указатели.

2. То, как ты это назвал, это называется выделение в "статической" области памяти, то есть по-факту структура описания самого объекта размещается в стеке, если же твой класс содержит поля, которые создаются в куче, то они будут созданы в куче, как бы ты этого не хотел. При выходе из области видимости переменной, размещенной в стеке, для нее вызывается деструктор, причем в порядке, обратном их декларации. То есть, например:

>> {


>> my a;


>> my b;


>> ...


>> }



Сначала будет вызван деструктор для b, затем для a. Это вполне логично.
Если ты создал объект в куче (при помощи new, например), тогда деструктор для фактического объекта вызван не будет, вызван будет (если это вообще вызовом можно назвать, по факту, просто указатель стека сместится или данные перезатрутся в зависимости от контекста) деструктор для переменной-указателя, а не на то, что она указывает. То есть в следующем случае:

>> my *a = new a();


Ты имеешь две сущности. Первая - переменная a, которая является указателем на объект в куче. вторая - непосредственно объект a в куче. При выходе a из области видимости будет вызван деструктор именно для ПЕРЕМЕННОЙ-УКАЗАТЕЛЯ, а НЕ для ОБЪЕКТА. Поэтому, если ты не передал куда-то указатель для дальнейшего использования или не вызвал delete вручную, тогда, поздравляю, ты проебал память.

3. Различие структур между c и c++ состоит в том, что в обычном c кроме членов-данных ничего в структуру затолкать нельзя. В лучшем случае, если ты захочешь сотворить подобие какого-то класса, тебе будет создать члены-данные, являющимися указателями на соответствующие функции. Получится своеобразный виртуальный класс. На деле так делают изредка и просто прибегают к созданию заковыристых имен для функций на все случаи жизни. Алсо в цэ ты можешь при инициализации структуры указывать названия заполняемых полей явно, например:

>> struct my_struct s = { .param_a = 1, .param_b = "char str" ... };



В крестах такую хуйню не провернешь уже, потому что, как говорят старики из комитета, нахуя вам такой синтаксис, если родина дала конструкторы.
В крестах же отличие структуры от класса минимально и заключается лишь тем, что по-умолчанию в структуре все члены открытые (являются public), в то время, как в классе они по-умолчанию private. Деструктор, конструктор, если они не объявлены, генерируются автоматически, как, впрочем, и некоторые другие конструкторы и присваивания (но там есть множество исключений).
Алсо при объявлении шаблонов ты можешь использовать только ключевое слово class или typename, хотя это никакого отношения к структурам, фактически, и не имеет.
57 Кб, 1361x543
#581 #1000168
Дроч, почему каждый раз программа отрабатывает вплоть до return в main() без нареканий, а потом тут же хуйня пикрелейтед?
1000169
#582 #1000169
>>1000168
всё, нашел. это я чедух, удалял указатель, для которого не выделена память.
#583 #1000203
Есть ли объяснение TSP https://en.wikipedia.org/wiki/Travelling_salesman_problem для крестов по русски? Мне туго в англ.
1000205
#584 #1000205
>>1000203
А не не. Уже нашел
#585 #1000216
Переменная это проименованная область памяти, у меня вопрос, где хранится имя самой переменной и где хранится адрес к которому привязана переменная?
#586 #1000224
>>1000216

>где хранится имя самой переменной


Нигде. После компиляции имя переменной не имеет смысла. Если язык интерпретируемый, то это уже по его усмотрению в какой-нибудь хеш-таблице, скорее всего.
#587 #1000241
>>1000216

>де хранится имя самой переменной


В компиляторе.

>где хранится адрес к которому привязана переменная?


В коде программы.
#588 #1000254
Какой же code::block убогий. Зачем вообще за него сел.
#589 #1000268
>>1000216

>Переменная это проименованная область памяти


Это тебе училка по информатике сказала?
12 Кб, 413x131
#590 #1000314
Второй вариант через ссылку - наиболее короткий способ сделать сие извращение?
1000414
#591 #1000327
В универе стоит люто настроенный компилятор, который не хочет пропускать функцию stoi.<string> подключен, он просто требует, чтобы было объявление этой функции. Что нужно сделать, чтобы прога скомпилировалась.
10003531000411
#592 #1000353
>>1000327
using namespace std;
10003571000380
#593 #1000357
>>1000353
Как изменить максимальное значение для RAND_MAX? Мне нужно увеличить потолок, получаемый через rand().
Простой #define RAND_MAX 0xFFFFFFFF даст нужный результат?
1000367
#594 #1000363
Как запилить двухмерный динамический массив?
1000370
#595 #1000367
>>1000357
Ты можешь в заголовочном файле библиотеки поменять. Но никаких гарантий, что что-то поменяется или rand после этого будет работать стабильно.
Если компилятор поддерживает C++11, то попробуй это.
http://ru.cppreference.com/w/cpp/numeric/random/uniform_int_distribution
#597 #1000379
>>1000370
Спасибо
#598 #1000380
>>1000353
Прописано было.
мимо_автор_оригинального поста
1000388
#599 #1000382
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
int ptrx = NULL, ptry = NULL;
int bdxy = NULL;
//int x[100]; Ненужное
//int y[100];
//int rsg[100];
int n, i, rst, grr;
cout<<"Сколько пунктов "<<endl;
cin>> n;

ptrx= new int[n];
ptry= new int[n];

bdxy= new int*[n];
for(i=0; i<n; i++){
bdxy= new int[n];
}

for(i=1; i<=n; i++){
cin>> ptrx >> ptry;
}

for(i=0; i<=n; i++){
for(grr=1; grr<=n; grr++){
rst = abs(ptrx[grr]-ptrx)+abs(ptry[grr]-ptry);
cout<< i <<" и "<< grr <<" равно "<< rst <<endl;
bdxy[grr] = rst;
}
rst = abs(ptrx[i+1]-ptrx)+abs(ptry[i+1]-ptry);

}

cout<<endl;

for (i=0; i<n; i++){
for(int j=0; j<n; j++){;
cout<<" "<<bdxy[j];
}
cout<<endl;
}

delete []ptrx;
delete []ptry;
for(int count=0; count<2; count++){
delete []bdxy[count];
}

return 0;
}

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

В чем ошибка?
#599 #1000382
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
int ptrx = NULL, ptry = NULL;
int bdxy = NULL;
//int x[100]; Ненужное
//int y[100];
//int rsg[100];
int n, i, rst, grr;
cout<<"Сколько пунктов "<<endl;
cin>> n;

ptrx= new int[n];
ptry= new int[n];

bdxy= new int*[n];
for(i=0; i<n; i++){
bdxy= new int[n];
}

for(i=1; i<=n; i++){
cin>> ptrx >> ptry;
}

for(i=0; i<=n; i++){
for(grr=1; grr<=n; grr++){
rst = abs(ptrx[grr]-ptrx)+abs(ptry[grr]-ptry);
cout<< i <<" и "<< grr <<" равно "<< rst <<endl;
bdxy[grr] = rst;
}
rst = abs(ptrx[i+1]-ptrx)+abs(ptry[i+1]-ptry);

}

cout<<endl;

for (i=0; i<n; i++){
for(int j=0; j<n; j++){;
cout<<" "<<bdxy[j];
}
cout<<endl;
}

delete []ptrx;
delete []ptry;
for(int count=0; count<2; count++){
delete []bdxy[count];
}

return 0;
}

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

В чем ошибка?
10003871000388
#600 #1000387
>>1000382
Этот функционал появился в версии C++11. Адекватного способа добавить это в отсталый компилятор нет.
10003881000409
#601 #1000388
>>1000380 -> >>1000387

>>1000382
Залей куда-нибудь код (ideone), может кто-нибудь захочет покопаться.
1000406
#602 #1000406
>>1000388
Я уже решил. Там наверно mingw ебнулся и не принимал <= в цикле, для ввода в матрицу значений.
#603 #1000409
>>1000387
То есть нужно либо самому в код добавить такую функцию?
#604 #1000411
>>1000327
Так, СТОП. Тебе не <string> нужен, а <cstring>
1000426
#605 #1000414
>>1000314
Гугли про strict aliasing
1000747
#606 #1000426
>>1000411
Подключено.
662 Кб, 393x287
#607 #1000465
Как реализовать норамльный поиск?
1000486
#608 #1000486
>>1000465
Реализации и алгоритмы есть в интернете. В общем случае это какая-то разновидность перебора, т.к. задача коммивояжера - NP-трудная.
CMake #609 #1000493
Программач, не могу осилить это говно. Вроде C++ тред как раз для этого подойдет.

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

Непонятно вообще, прямые пути писать в CMakeLists для каждого файла в корне проекта, или эти add_subdirectory использовать. И как их линкать между собой.

Помоги определиться с написанием с правильного CMake для проекта такой структуры:
/Project
- CMakeLists.txt
- /res
-- project.cpp
-- project.hpp
-- resources.hpp
- /src
-- app.ico
-- project.manifest
-- resources.rc
1000542
#610 #1000542
>>1000493
Что-то вроде этого, не проверял, может накосячил где
https://pastebin.com/E7MpKcp7
1001655
35 Кб, 792x418
#611 #1000747
>>1000414
Ужасы то какие.
>>999648
4. Дочитал до перегрузки операторов. Вот глядя на эти оптимизации компилятора, если я перегружаю, для примера, "+", есть гарантии, что компилятор не поменяет местами операнды?
5. inline. Я могу его прикрепить в объявлении, в определении или сразу в двух местах, любая комбинация ошибок не выдаёт. В каких из четырёх вариантов этот модификатор применяется?
6. Список инициализации. В этот список можно засовывать чёрт-знает что. То есть по сути это просто более краткая запись того, что я изобразил ниже обведённое красным?
1000749
#612 #1000749
>>1000747
4. Компилятор никогда не меняет местами операнды (т.е. справа налево). Компилятор лишь может поменять порядок вычисления.
5. Если объява и тело в одном файле, пофигу, куда писать. Если писать инлайн в заголовке для скомпиленой либы, наверняка будет ошибка (ты предлагаешь компилятору инлайнить то, для чего нет исходника).
6. Для POD-типов список инициализации будет именно aggregate-инициализацией (пришедшей из C, это часто in-place конструирование). Обведённое красным может быть конструированием временного объекта (грамматически это std::initializer_list (название похоже на то, про что ты спрашиваешь, но это совсем другое), из которого конструируется объект нужного типа) и копированием/перемещением оного. Вообще говоря компилятору дозволено вызвать in-place конструктор в обоих случаях, но умеют ли они анализировать частный случай ради копеечной выгоды? Вряд ли.

Очевидно, что в случае с int это похую. В общем случае списки инициализаций предпочтительнее. Тело вообще может быть пустое.
#613 #1000751
4. Порядок вычисления - это если на одном уровне операндов есть вызовы функций. Порядок применения операторов точно определён (associativity).
#614 #1000760
Как правильно подключать инклуды?
Видел кучу разных способов, кто-то подключает все в main.h, а сам main.h в main.cpp. Кто-то во всех .h и в main.cpp подключает main.h, а потом эти .h уже подключают в .cpp.
1000947
#615 #1000815
Уважаемые с++ знатоки, вопрос задает аноним из Мухосранска.
Есть один говнокод http://ideone.com/A0jPgw. Работает правильно, но неоптимально. Как его можно оптимизировать?
Суть задачи: На вход подаются строки, а выдать мы должны либо "ОК", если строка встречается впервые, либо эту же самую строку и число(Сначала 1, потом 2, потом 3 и так далее)
Пример:
Ввод:
А
А
B
C
Вывод:
OK
A1
OK
OK
Да, я знаю, что это можно сделать без класса, но мне надо с классом
10008471000869
#616 #1000847
>>1000815
Строки загоняешь в словарь. Сама строка- ключ, значение по этому ключу - количество раз сколько эта строка встречалась.
10008711000930
#617 #1000869
>>1000815
Есть такой контейнер. Map называется.
10008711000895
#618 #1000871
>>1000847
>>1000869
Спасибо, буду гуглить
Туда ведь можно этот класс вкорячить? Мне просто необходимо именно написать класс для хранения этой инфы
1000875
#619 #1000875
>>1000871
Зачем тебе вкорячивать свой класс в контейнер общего назначения? Ты упорот?
10008781000895
#620 #1000878
>>1000875
Преподы мои упороты

> Разработайте класс, для хранения информации о зарегистрированных пользователях.

#621 #1000885
>>1000878
Стоит уточнить упоротость преподов. Может оказаться, что map нельзя использовать.
10008891000895
#622 #1000889
>>1000885
Про контейнеры не сказано ничего, следовательно разрешены, и map в том числе, я полагаю
Вообще говоря, решение такой задачи не требует и контейнеров и вообще занимает шесть строк, но вот эти ограничения... Зачем?
1000890
#623 #1000890
>>1000889
Я бы хотел увидеть эти 6 строк, но вижу только ошибку 404.
23 Кб, 816x131
#624 #1000892
>>1000890
Каюсь, шесть строк -- это с мапом. Но все равно, зачем сюда вкорячивать класс -- неясно
10008951000999
#625 #1000893
>>1000890
А, блин, только сейчас заметил, что код уже . Вот что я напердолил с классом
http://ideone.com/8aXkqL
#626 #1000895
>>1000890
>>1000892
>>1000885
>>1000875
>>1000869
Господа, а если реализовать класс с одним-единственным публичным полем -- ником и реализовать все через мап, но вместо строки используя созданный класс. Взлетит?
1000897
#627 #1000897
>>1000895
А чем тебя твоя реализация не устраивает? Все методы find() делают то же самое, ты просто пользуешься уже готовой реализацией.
1000898
#628 #1000898
>>1000897
Лично меня моя реализация устраивает всем. Проблема в том, что на большом тесте (98532 строк) она не укладывается в лимит по времени (лимит -- 1 секунда)
#629 #1000899
>>1000878

> Преподы мои упороты


Скорее всего это ты упорот немного. Тебе нужен класс для хранения информации о зарегистрированных пользователях, а не класс для храненения имени пользователя. Тоесть тебе нужен класс с методами (к примеру): add(std::string name) и count(std::string name). Можно сделать чтобы add заодно еще и возвращал сколько раз встречается добавленное имя. Алсо add лучше назвать push_back (для большего подобия с stl), но это по желанию, смотря насколько ты себя дерзким парнем позиционируешь.
10009031000930
#630 #1000901
>>1000898
Попробуй isThere модификатор inline заебашь.
1000903
#631 #1000903
>>1000899

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


Просвети нуба, пожалуйста, а поля ему какие нужны?
>>1000901

> inline


Ускорило, но на три сотых секунды. Надо выгадать еще 0,067 хотя бы
10009051000912
#632 #1000905
>>1000903

>на три сотых секунды


Гулять как гулять! Хуячь __forceinline!
10009101000930
#633 #1000909
>>1000898
Проблема твоей реализации что у тебя для подсчета количества строк просматриваются все 98532. А, к примеру, для варианта с словарем для ста тысяч строк будет просмотрено не больше 17 элементов - так как там логарифм. Твой алгоритм можно немного модифицировать отсортировав массив с строками, и используя бинарный поиск - эффективность будет как у словаря. Но остается проблема с заполнением словаря, если строки тебе не выдаются сразу пачкой - тебе прийдется пересортировывать массив после каждого добавления. Даже если использовать сортировку вставками, которая для такого случая (вставка одного элемента в же отсортированый массив) очень удобна - все равно нужно сдвигать элементы в массиве. Тоесть добавление каждой новой строки - линия. Тогда как в словарь - логарифм.
1000910
#634 #1000910
>>1000905
Так оно не компилится.
Или я не туда пишу?
__forceinline int isThere (int n, int curPos, username * base){
int c = 0;
for(int i = 0; i < n; i++)
if(base[curPos].nick == base.nick)
c++;
return c;
}
>>1000909
Понял, примерно, буду гуглить
1000932
#635 #1000912
>>1000903

> поля ему какие нужны


Необходимый минимум - контейнер для строк. Тот же словарь, например. Или свой велосипед. Ну а так добавить можно еще что-то, например количество запомненых строк. Единственно правильного варианта нет. Нужно отталкиваться от сценариев использования твоего класса.
10009141000930
#636 #1000914
>>1000912
То есть, как минимум map<string, int> и еще один int? Понял, пойду пердолить
#637 #1000918
>>1000898
Замени на std::unordered_map
10009301000992
#638 #1000930
>>1000918
>>1000912
>>1000905
>>1000899
>>1000890
>>1000847

Господа, всем огромная благодарность, но послушал я вас лишь отчасти. Зашло вот это: http://ideone.com/innaMF Оцените по шкале от индуса до Линуса Торвальдса?
#639 #1000932
>>1000910
Что за хуйню ты напрограммировал. У тебя линейный поиск идет, в то время, как по-хорошему надо логарифмический сделать с исопльзованием std::set или std::map, например.
1000934
#640 #1000934
>>1000932
Надо, но я же нуб, так что написал хуйню. Но оно же работало. Меня смущала необходимость написания именно класса, поэтому я высрал это
>>1000930
#641 #1000947
>>1000760

>Как правильно подключать инклуды?


Что значит "правильно"?
1000990
#642 #1000951
>>1000930

> от индуса до Линуса Торвальдса


Они друг от друга недалеко ушли. Оба не любят strict aliasing и обращаются к указателям до проверки их на NULL.
1000954
#643 #1000954
>>1000951
Где ему тут проверка нужна?
>>1000930
Если в своей friend функции поменяешь значения на ссылки, то может получится ещё пару миллисекунд выиграть, но это не точно.
10009551000957
#644 #1000955
>>1000954

>Где ему тут проверка нужна?


Я в общем говорю. Твой код не смотрел.
1000956
#645 #1000956
>>1000955
А, жопой читаю, простите.
#646 #1000957
>>1000954

> то может получится ещё пару миллисекунд выиграть


Возьму на вооружение, но все же я и так теперь управляюсь за треть секунды, мне хватит
#647 #1000963
>>1000930

> username::username(string a){


> nick = a;


> }


username::username(string a) : nick(std::move(a)) {}
10009661000987
#648 #1000965
>>1000930

> inline bool operator < (const username a, const username b){


> if (a.nick<b.nick)


> return 1;


> else return 0;


> }


Типичный boolshit.

inline bool operator < (const username a, const username b){ return a.nick<b.nick; }
1000966
#649 #1000966
>>1000965
И как по твоему, сократит время выполнения?
>>1000963
Хотя в эффективность этого верю
10009671000987
#650 #1000967
>>1000966

>Хотя в эффективность этого верю


Дело не в эффективности. Я почти уверен, что компилятор выдаст для твоего и моего варианта одинаковый код. Он не тупой и понимает, что `if (x == true) return true; else return false;` можно заменить на return x;
1000970
#651 #1000970
>>1000967
Резонно
#652 #1000987
>>1000963
>>1000966
В операторе >> я бы тоже использовал std::move для передачи строки в конструктор.
#653 #1000990
>>1000947
Есть же наверное какие-то общие правила.
1000993
#654 #1000992
>>1000918
Кстати, хорошая идея. Потому что в самом начале уже задается максимальное количество имен и можно выделить память для unordered_map-а (с учетом max_load_factor естественно).
#655 #1000993
>>1000990
Думаю, нужно отталкиваться от того, что любой инклюд подставляет код в указанное место. Поэтому используй защиту от повторных инклюдов (#pragma once или комбинации #ifndef ANY_KEYWORD #define KEYWORD #endif, смотря каким компилятором пользуешься), разделяй реализацию класса и заголовочный файл класса, чтоб меньше кода подставлялось, это уменьшит время компиляции. Все статические инклюды то, где ничего не меняется, всякие <iostream>, <string>, <Windows.h> выдели в один отдельный заголовок, сделай его предкомпилированным, а всем остальным .cpp файлам прикажи использовать этот предкомпилированный заголовок, это тоже уменьшит время компиляции. Хотя всё это имеет значение на очень больших проектах, там будет ощутимо, когда компиляция занимает по 10-30 секунд.
Смотри, чтоб не было рекурсивных инклюдов, когда A.h включает B.h И B.h включает A.h
1001024
#656 #1000999
Классно угораете.
>>1000878
Какая часть цитаты подразумевает запихивание твоего класса в map? Что именно преподы хотят видеть в классе - хранение строки (лолчто? Лолнахуй?) или считывание из cin?
Стоило бы спросить у преподов про то, что должен подерживать класс - копирование, exception safety, thread safety и, самое главное, цель запихивания в класс. Потому что, когда что-то запихивают в класс, это делают либо для автоматического управления ресурсами, либо для того, чтобы в этот класс пихать что-то индивидуальное, а задание - прочитать из cin, и он один на всю программу.
Подойди к заведующему кафедры и изложи упоротость препода. Считывание из cin и проверка на повторы с выводом результата - это одно действие, а не материал для класса.
>>1000892
Когда говорят о строках, говорят о строках читаемого кода - по статементу на строку.

>bits/stdc++


Совсем ебанутый.
>>1000930
Отлично, username - это чуть ли не один в один string. С таким же успехом мог сделать typedef string username

>string name;


>in >> name;


>a = username(name);


>return in;



in>>a.nick - нет? Слишком просто?
1001027
#657 #1001002
Даже ещё лучше:
return in>>a.nick;
1001027
#658 #1001024
>>1000993
Годно расписал, спасибо.
#659 #1001027
>>1000999

> Какая часть цитаты подразумевает запихивание твоего класса в map? Что именно преподы хотят видеть в классе - хранение строки (лолчто? Лолнахуй?) или считывание из cin?


> Стоило бы спросить у преподов про то, что должен подерживать класс - копирование, exception safety, thread safety и, самое главное, цель запихивания в класс. Потому что, когда что-то запихивают в класс, это делают либо для автоматического управления ресурсами, либо для того, чтобы в этот класс пихать что-то индивидуальное, а задание - прочитать из cin, и он один на всю программу.


> Подойди к заведующему кафедры и изложи упоротость препода. Считывание из cin и проверка на повторы с выводом результата - это одно действие, а не материал для класса.


Честно скажу -- мне плевать. Мне нужно было пройти тесты и написать какой-никакой класс. Так что ну их, эти костыли, да и скорее всего, это никто и читать не будет
>>1001002

> Даже ещё лучше:


> return in>>a.nick;


А вот это классно, спасибо, возьму на вооружение
16 Кб, 897x294
10 Кб, 835x240
#660 #1001033
Чё пацаны, упарываетесь, когда работаете?
#661 #1001103
Можно ли каким-нибудь образом определить какая из перегруженных функций была использована или будет использована?
1001118
#662 #1001118
>>1001103
Дебагером, отладочными трейсами
1001122
#663 #1001122
>>1001118
Как?
1001127
#664 #1001127
>>1001122
внутри перегруженной функции вывести текст вида "peregruzenaya funkciya"
1001129
#665 #1001129
>>1001127
Мне нужно библиотечные функции определить, не мои.
10011321001134
#666 #1001132
>>1001129
в режиме отладки посмотреть стек вызовов
1001174
#668 #1001174
>>1001134
>>1001132
Там нету информации о том какую библиотечную функцию я использую. Там просто показываются только мои функции.
1001232
#669 #1001232
>>1001174
Когда доходишь до вызова делай принудительный вход в вызываемую функцию (Force Step Into) и смотри стек вызовов. Название вызванной функции будет в стеке вызовов.
#670 #1001303
Дайте советов мудрых по opencv. Нужно с помощью неё научиться в течении месяца это чтобы не примали меня за студента с горящей жопой распознавать изображение с камеры таким образом, чтобы ориентироваться на местности. Реквестирую постепенный план, по которому процесс будет происходить.
1001316
#671 #1001316
>>1001303
В машоб-тред проследуй.
1001352
#672 #1001352
>>1001316
Ты не понял. Тут алгоритмы нужны, чтобы на картинке, к примеру, 800x600 вычислить яркие цвета, отличающиеся друг от друга. Пусть это будут красные квадраты. Найти их центр масс. Далее вычислить до них расстояние через известные величины. Это задача, и никакого ML не требуется.
1001365
#675 #1001655
>>1000542
Т.е. >писать прямые для каждого файла в корне проекта ?
Спасибо, анон.
#676 #1001797
>>998000

11. Одикостоящая цифра преобразовывается в тип класса, из за неявного преобразования. Конструктор, который принимает один аргумент типа, становится функцией преобразования из типа в аргумента в тип класса. поставь рядом с конструктором explicit один "d" пропадет.
1001802
#677 #1001800
>>998000
7. Новый объект класса инициализаруется уже существующим объектом класса, чистой воды контактор копирования.
Что тебя смущает ?
1001801
#678 #1001801
>>1001800
Конструктор копирования, пардон.

Самофикс.
#679 #1001802
>>1001797
Точнее d не пропадет у тебя будет что то типо "нету преобразования из int в тип А". Ошибка компиляции будет.

Вопрос отдельный : Как ты так хитро вызываешь f() ? она ведь метод класса, а операция членства не задействована (c.f(3) например).
Тред утонул или удален.
Это копия, сохраненная 7 июля 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски