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

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

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

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

25 Кб, 416x287

С++ #57 3 авг, 12:07 #1036675 В конец треда | Веб

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

Прошлый - https://2ch.hk/pr/res/1028033.html (М)

Ответы3764837743384293894241086422974325644263

75 Кб, 212x250

3 авг, 12:09 #2 #1036677

С++ это Си с классами.

Ответы3668736688367213675837191

3 авг, 12:17 #3 #1036686

Может запилим свой жаваскрипт с монадами, ленивыми вычислениями и выводом типов?

Ответы36690

3 авг, 12:17 #4 #1036687

>>1036677
С++ это Go с дженериками и эксепшенами!

3 авг, 12:22 #5 #1036688

>>1036677
Не, это другой язык, и с Си совместим через ж.

3 авг, 12:24 #6 #1036690

>>1036686
Надо запилить локализованную версию ISO EBNF на русском, сделать на ней конпилятор конпиляторов, и разрабатывать синтаксис уже в EBNF.

Ответы36693

3 авг, 12:27 #7 #1036693

>>1036690
А чтобы не изобретать велосипед, можно транслировать этот метаязык в LEX/YACC просто. Вот и вротенд. А для бэкэнда - LLVM.

3 авг, 13:35 #8 #1036721

>>1036677
с лмбдами!

3 авг, 14:23 #9 #1036758

>>1036677
C++ это си с классами от Страуструпа, шаблонами от Степанова, с лямбдами от Черча, со стандартной библиотекой от Плаугера, c метаклассами от Саттера, с программной транзакционной памятью от Найта... вы не заскучали? A то уже новый стандарт подоспел:
https://en.wikipedia.org/wiki/C++20

Там будет еще тысяча новых свистоперделов, чтобы вы НИКОГДА не смогли выучить этот ебланский язык.

Ответы36765367663699745184

3 авг, 14:34 #10 #1036765

>>1036758
А еще я сосу хуи

1036758-кун

3 авг, 14:34 #11 #1036766

>>1036758
Ура, зато сетевая либа стандартная наконец-то будет! Лет через 20 джаву догонят

Ответы43187

3 авг, 17:31 #12 #1036993

Нужно распарсить последовательности целых чисел вида "X", "X/Y", "X//Z", "X/Y/Z" при помощи boost spirit.

Пока навелосипедил несколько мелких структур для не полных наборов, и одну общую для полного набора (с конструкторами для инициальзации из не полных наборов)

struct TRIV { int v; };
struct TRIVT { int v; int t; };
struct TRIVN { int v; int n; };
struct TRI
{
int v = 0;
int t = 0;
int n = 0;

TRI() { };
TRI(int V, int T, int N) : v(V), t(T), n(N) { };
TRI(TRIV t) : v(t.v) { };
TRI(TRIVT t) : v(t.v), t(t.t) { };
TRI(TRIVN t) : v(t.v), n(t.n) { };
};

и соответствующие парсеры для считывания этих вариантов.

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

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

d:\libs\boost\boost\spirit\home\x3\support\traits\move_to.hpp(181): error C2665: 'boost::spirit::x3::traits::detail::move_to': none of the 3 overloads could convert all the argument types
1>d:\libs\boost\boost\spirit\home\x3\support\traits\move_to.hpp(150): note: could be 'void boost::spirit::x3::traits::detail::move_to<TRIV,Dest>(Source &&,Dest &,boost::spirit::x3::traits::variant_attribute)'
1> with
1> [
1> Dest=TRI,
1> Source=TRIV
1> ]

Как это разрешить? Полный текст: https://pastebin.com/2cp5NziH

3 авг, 17:31 #12 #1036993

Нужно распарсить последовательности целых чисел вида "X", "X/Y", "X//Z", "X/Y/Z" при помощи boost spirit.

Пока навелосипедил несколько мелких структур для не полных наборов, и одну общую для полного набора (с конструкторами для инициальзации из не полных наборов)

struct TRIV { int v; };
struct TRIVT { int v; int t; };
struct TRIVN { int v; int n; };
struct TRI
{
int v = 0;
int t = 0;
int n = 0;

TRI() { };
TRI(int V, int T, int N) : v(V), t(T), n(N) { };
TRI(TRIV t) : v(t.v) { };
TRI(TRIVT t) : v(t.v), t(t.t) { };
TRI(TRIVN t) : v(t.v), n(t.n) { };
};

и соответствующие парсеры для считывания этих вариантов.

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

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

d:\libs\boost\boost\spirit\home\x3\support\traits\move_to.hpp(181): error C2665: 'boost::spirit::x3::traits::detail::move_to': none of the 3 overloads could convert all the argument types
1>d:\libs\boost\boost\spirit\home\x3\support\traits\move_to.hpp(150): note: could be 'void boost::spirit::x3::traits::detail::move_to<TRIV,Dest>(Source &&,Dest &,boost::spirit::x3::traits::variant_attribute)'
1> with
1> [
1> Dest=TRI,
1> Source=TRIV
1> ]

Как это разрешить? Полный текст: https://pastebin.com/2cp5NziH

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

3 авг, 17:33 #13 #1036997

>>1036758
Когда уже мелкомягкие вытащат filesystem из эксперименталки?

3 авг, 17:49 #14 #1037009

>>1036993
Два часа работы на перле и 10 дней ебанины на С++. Зато будет работать за 5 мс. Охуительная выгода.

Ответы370113701337021

3 авг, 17:51 #15 #1037011

>>1037009
На перле импортер моделей не напишешь.

3 авг, 17:53 #16 #1037013

>>1037009
В плюсах тоже есть регекс.

Ответы37016

3 авг, 17:58 #17 #1037016

>>1037013
Медленнее.

3 авг, 18:05 #18 #1037021

>>1037009
Зря ты перл упомянул. Местные макакены никогда с ним не работали, но точно знают что он хуже чем js/peton/любой другой язык нейм.

Ответы3711137611

sage 3 авг, 19:57 #19 #1037111

>>1037021
Местные макакены, которые с ним работали, ещё точнее знают, что он хуже чем js/peton/любой другой язык нейм.

3 авг, 21:32 #20 #1037191

>>1036677
Массивы это указатели

Ответы37366

3 авг, 23:43 #21 #1037366

>>1037191
Указатели это массивы

трустори, в B или BCPL так было

4 авг, 11:01 #22 #1037611

>>1037021
Щас бы понтоваться знанием юзлесс некроговна некромамонта в 2017 году. Может еще коболом попонтуешься, или там PL/1 ?

Ответы37671

4 авг, 11:06 #23 #1037616

Чому qt creator не могут научить нормально выводить типы для auto?

Ответы3764737787

4 авг, 11:44 #24 #1037647

>>1037616
Потому что есть VS и CLion

Ответы37968

4 авг, 11:44 #25 #1037648

>>1036675 (OP)
Что точно делает std::thread::join()? Переустанавливает EIP на первую инструкцию кода потоковой функции? Почему называется join? Почему после выполнения join вызывающий код ждет завершения потока?

Ответы3765137787

4 авг, 11:48 #26 #1037651

>>1037648
> Почему называется join? Почему после выполнения join вызывающий код ждет завершения потока?
Потому что ждет, когда поток присоединится заджойнится к нему.

4 авг, 12:06 #27 #1037664

Делаю нечто похожее на скайп, и нужно видео по сети передавать. Чтобы уменьшить трафик хочу передавать сжатое видео. Посоветуйте видео кодеки (желательно опенсорс с LGPL). Для аудио пробовал opus и speex, может есть еще годные кодеки?

Ответы3768838067

4 авг, 12:22 #28 #1037671

>>1037611
Дурик, перл изучают в универах британии на ай ти факультетах.
Обосрался? Подотрись и уйди молча.

4 авг, 12:37 #29 #1037674

Сижу на работе пинаю хуй уже неделю без дела (С# ASP.NET веб макакен)

учу кресты

знаю Си

ПОЖЕЛАЙ МНЕ УДАЧИ
ГРУППА КРОВИИИИИИИИИИИИИИ

Ответы43972

4 авг, 13:03 #30 #1037688

>>1037664
какие кодеки епт
берепт - береж и реализуешь какой-нибудь стек протоколов по передаче потокового видео в сетяй tcp/ip
там будут указаны и кодеки и все остальное

Ответы37787

4 авг, 14:21 #31 #1037743

>>1036675 (OP)
В каких случаях возвращать из геттера ссылку, а в каких значение?

Ответы37787

4 авг, 15:09 #32 #1037787

>>1037616
Тому что ты плагин Clang Code Model не включил.
>>1037648
>Переустанавливает EIP на первую инструкцию кода потоковой функции?
Что, блядь? Где в стандарте плюсов есть слова "инструкция" и "EIP"?
>Blocks the current thread until the thread identified by *this finishes its execution.
http://en.cppreference.com/w/cpp/thread/thread/join
>>1037688
Нихуя не понял.
>>1037743
Нахуй тебе геттер, если ты ссылку возвращаешь?

Ответы3797037976

4 авг, 16:04 #33 #1037856

Как протраверсить дерево без рекурсии?

Ответы37866

4 авг, 16:08 #34 #1037866

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

4 авг, 18:08 #35 #1037951

>>1036993
Таки разобрался со спиритом. Даже если оба операнда вариативного парсера возвращают типы, которые могут быть неявно преобразованы друг в друга, он все равно вернет variant<A, B>. Пришлось сделать для него визитор на шаблоне, чтобы он внутри себя все преобразовывал в итоговый тип.

4 авг, 18:34 #36 #1037968

>>1037647
В клионе можно собирать кутовские проекты?

Ответы3797138018

4 авг, 18:35 #37 #1037970

>>1037787
>Тому что ты плагин Clang Code Model не включил.
Чому нет из коробки?

4 авг, 18:35 #38 #1037971

>>1037968
А что ему помешает?

Ответы37973

4 авг, 18:37 #39 #1037973

>>1037971
я хуй знает. qmake вызывать надо

4 авг, 18:39 #40 #1037976

>>1037787
>Тому что ты плагин Clang Code Model не включил.
Ебать, вот это действительно круто!

4 авг, 19:26 #41 #1038018

>>1037968
Если на CMake, то все норм будет, иначе - никак. Они пока что даже не собираются нормальную поддержку редактирования CMake скриптов сделать, что уж говорить о других системах сборки (того же make, например, как самой простой и одновременно дурацкой системы сборки). Если подумать, если можно системой сборки сгенерировать проект для CodeBlocks, тогда и подключить CLion к нему плевое дело.

4 авг, 20:54 #42 #1038067

>>1037664
Реализуй WebRTC, нахуй изобретать что-то.

4 авг, 21:42 #43 #1038097

В каких случаях возвращаемое значение функции должно быть const?

Вообще, насколько фанатично надо использовать const?

Ответы381203815838602

4 авг, 22:09 #44 #1038120

>>1038097
Ни в каких не надо использовать. Это страуструповый рак. Такое нужно лечить химиотерапией и полуторалитровыми клизмами.

4 авг, 23:27 #45 #1038158

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

Ответы38330

5 авг, 06:32 #46 #1038309

Плюсаны, у меня проблема. Когда я заменяю один файл в проекте другим, одноименным, visual studio не перекомпилирует его. Только если я зайду в файл, что-то поменяю и потом нажму ctrl+s, она увидит, что файл поменялся и перекомпилит его. Почему так происходит, и как настроить так, чтобы она рекомпилила файл в любом случае?

Ответы3831538738

5 авг, 08:57 #47 #1038315

>>1038309
Время модификации скопированного файла где-то в прошлом.

5 авг, 09:48 #48 #1038330

>>1038158
а если я хочу вернуть const int?

Ответы38342

5 авг, 10:13 #49 #1038342

>>1038330
Скалярные типы и так передаются по значению, ты не сможешь его изменить, лалка.
другой

5 авг, 11:49 #50 #1038385

32 Кб, 830x444

31 Кб, 406x880

1. Почему тип fun перестаёт подходить, есть я захватываю "a" и "b" (или что угодно ещё, даже обычную переменную не выходит)? Вон, "с" с помощью auto создалась и её можно даже передавать в другие функции. Что это за тип такой образуется, что он отличается от типа fun? Я вроде как прочитал главу про лямбды из "Современный и Эффективный С++", но это всё-равно непонятно.

2. Что почитать про разбор текстовых форматов файлов и вообще текста? Постоянно получаются чудовище на несколько сотен строк, примерно как на второй картинке. Можно, конечно переменные подписывать, но код и так очевидный по большей части, просто длиннее будет. Достаточно применение этих однобуквенных в начале указать. Тут для себя файлы с jps-ки запарсить, они изначально все верные, а если туда добавлять ещё проверки на корректность файла, то это же вообще ужас будет.

Ответы383953844738822

5 авг, 12:34 #51 #1038395

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

Ответы384003844738675

5 авг, 12:47 #52 #1038400

>>1038395
> у каждой лямбды уникальный тип.
Лол. Система типов уровня крестоговна.

Ответы38447

5 авг, 13:34 #53 #1038429

>>1036675 (OP)
Надо ли каждый метод перегружать const и не-const версиями, или достаточно сделать одну const версию?

Ответы38449

5 авг, 13:47 #54 #1038447

>>1038400
>>1038395
Оба пиздят. Тип лямблы в общем случае - std::function<int(huint)>, а >>1038385 пытается привести лямбду к функции. Ясен хуй, когда ничто не захвачено, лямбда - функция.

Ответы384603853138675

5 авг, 13:47 #55 #1038449

>>1038429
Пиздец, можно задать такой вопрос о любой черте языка. Ты охуел?

5 авг, 14:04 #56 #1038460

>>1038447
>> std::function<int(huint)>
Попизди-ка мне тут. Открой стандарт и там написано, что лямбда представляет собой класс с определенным operator(), ну и еще некоторыми дополнениями, суть которых здесь не особо важна.
Стандартная библиотека лишь позволяет завернуть лямбду в std::function.

Ответы38470

5 авг, 14:13 #57 #1038470

>>1038460
Ты прав. А теперь ответь на исходный вопрос.

Ответы38488

5 авг, 14:39 #58 #1038488

>>1038470
Я вообще не тот тип, которому ты отвечал Я мимокрокодил.

5 авг, 14:42 #59 #1038490

Как реализовать наследование метода общего класса, который выполняет одни и те же действия для всей иерархии под классов? Как обычный метод или как virtual?

Ответы3849338495

5 авг, 14:48 #60 #1038493

>>1038490
virtual имеет значение только тогда, когда ты пользуешься полиморфизмом указателей.

5 авг, 14:49 #61 #1038495

>>1038490
Если планируется его переопределять в подклассах, то виртуал, если нет, то нет, очевидно же.

5 авг, 15:58 #62 #1038531

>>1038447
>Тип лямблы в общем случае - std::function<int(huint)>
Ебать дебил.

5 авг, 18:09 #63 #1038584

Есть ли возможность очистить вектор без освобождения памяти? Аналог
auto cap= vector.capacity();
vector.clear();
vector.reserve(cap);
только без деаллоков-аллоков лишних.

Ответы38614

5 авг, 18:19 #64 #1038602

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

Ответы38690

22 Кб, 926x200

5 авг, 18:29 #65 #1038614

>>1038584
http://ru.cppreference.com/w/cpp/container/vector/clear

Ответы38640

12 Кб, 727x184

5 авг, 18:47 #66 #1038640

>>1038614
>никогда не доверяй референсам на русском языке
Эмпирическое правило опять сработало. Стандартом это не оговорено. Implementation dependent короче.

Ответы38754

5 авг, 19:28 #67 #1038675

>>1038447>>1038395
>std::function<int(huint)>
Благодарю, заработало. Правда, как-то вслепую использовать...
Я просто хотел добавлять в некоторый класс функции, и потом их как из массива использовать. Надеюсь, это нормальное решение, потом почитаю.

40 Кб, 1620x774

5 авг, 19:31 #68 #1038677

C++ индусы ебанные как дела идут? Богомерзкие пидарасы.

мимо Си-бог

Ответы38848

5 авг, 20:03 #69 #1038690

>>1038602
Да-да, возвращай const-значение. Не забудь помахать ручкой move-конструктору.

Ответы38692

5 авг, 20:12 #70 #1038692

>>1038690
>возвращай const-значение.
Еще забыл конст ссылку. Про откровенное петросянство речи не было.

Ответы43974

5 авг, 21:00 #71 #1038707

Блять, пока полчаса писал sntp-клиент - успел почувствовать себя дауном. А все из-за ебучих Little и Big endian, которые в документации к протоколу не упоминаются.

Ответы3871238754

5 авг, 21:09 #72 #1038712

>>1038707
В RFC все есть. Вообще это обычная практика в сетевых протоколах, зато моторолобояре довольны.

Ответы38736

5 авг, 21:39 #73 #1038736

>>1038712
Какая-то неочевидная практика. Ну и протокол я реализовывал по Википедии, да

Ответы3875443498

5 авг, 21:47 #74 #1038738

>>1038309
Пересобирать проект после замены файла пробовал?

5 авг, 22:06 #75 #1038754

>>1038640
В англоязычной версии написано то же самое и есть ссылка на ответ на стаке. Клир эквивалентен эрейзу от начала до конца, на стаке говорят, что эрейз не может менять капасити. В стандарте не нашёл:
http://eel.is/c++draft/vector#modifiers
>>1038736
>>1038707
Родина дала тебе itons и кучу всего другого.

Ответы3875538756

5 авг, 22:08 #76 #1038755

>>1038754
Так неочевидно было, что порядок байтов разный будет. Вот и мучился. Теперь буду rfc читать все-таки.

5 авг, 22:09 #77 #1038756

>>1038754
>В англоязычной версии написано то же самое и есть ссылка на ответ на стаке.
Где нет внятного доказательства, что clear не меняет capacity.
> Клир эквивалентен эрейзу от начала до конца
Это до C++11 так было.

6 авг, 00:31 #78 #1038822

>>1038385
>Что почитать про разбор текстовых форматов файлов и вообще текста?
boost::spirit. Базарю еще захочешь.

6 авг, 02:13 #79 #1038848

>>1038677
Хреново. Стандартопетухи все тащят и тащят в стандарт все говно, что найдут вокруг. Прям, как Вован из пасты.

Ответы38866

6 авг, 03:15 #80 #1038866

>>1038848
std::vector<bool> bools;
// ...
bool *b = &bools[5];

6 авг, 05:06 #81 #1038878

const

Ответы38880

6 авг, 05:28 #82 #1038880

>>1038878
unsigned

Ответы38904

6 авг, 08:58 #83 #1038904

>>1038880
reinterpret_cast

6 авг, 11:44 #84 #1038942

>>1036675 (OP)
> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Redirect.14.props(46,3): импортированный проект "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.cpp.props" не обнаружен. Проверьте правильность пути в объявлении <Import> и убедитесь в наличии файла на диске.
Как фиксить? Файла-то там нет этого. Даже если подложить из Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets его - та же ошибка.

Ответы38957

6 авг, 12:07 #85 #1038957

>>1038942
А, всё понял.
> The WDK is not yet compatible with Visual Studio 2017.
Заставляют жрать недоделанное говно.

6 авг, 17:36 #86 #1039148

ананасы, где можно почитать, как работает rtti?

6 авг, 18:25 #87 #1039190

А как передать произвольное число аргументов в другую функцию функции? Типа, у меня есть функция prn(), которая эти аргументы должна передать дальше в printf или fprintf. Конечно, есть vsprintf специально на этот случай, а в общем случае есть возможность без изменений передать всё это дальше?

Ответы39220

6 авг, 18:55 #88 #1039220

>>1039190
Ну например так:
template<typename ... Args>
void fwd_call(Args ...args) {
some_fn(args...);
}

Ответы3926839382

6 авг, 19:31 #89 #1039268

>>1039220
А в сишных функциях (без тимплитов) как?

Ответы39293

6 авг, 19:55 #90 #1039293

>>1039268
В си тред пиздуй va_args

6 авг, 20:55 #91 #1039381

Привет Анон, хочу вкатиться в программирование. Решаю задачки от яндекса и пытаюсь освоить for
https://pastebin.com/A9g93esN
Не могу понять почему у меня count увеличивается даже когда значения a и a[j] не равны. Объясните пожалуйста почему? И как сделать цикл так что бы сверять значения друг с другом
Вот задача что бы понять контекст: Дан массив. Выведите те его элементы, которые встречаются в массиве только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке.
Формат входных данных
В первой строке вводится количество элементов в массиве. Во второй строке вводятся элементы массива.
Формат выходных данных
Выведите ответ на задачу.

Ответы3944039854

6 авг, 20:57 #92 #1039382

>>1039220
Мм, благодарю.

6 авг, 21:23 #93 #1039440

>>1039381
Была похожая задача на собеседовании (привести как можно больше способов узнать количество повторений значения).
На векторах сделать можно, но пердолинг выходит, попробуй сделать на std::map или std::unordered_map.
По твоему вопросу - ты не обнуляешь счетчик.
Можно оптимизировать присваивая счетчику сразу 1, а внутренний цикл начинать не с 0, а с j + 1.

Ответы3946241004

6 авг, 21:30 #94 #1039462

>>1039440
https://stepik.org/lesson/13025/step/14?unit=undefined - эта задача
Идея в том что, если в массиве нету второго такого же элемента, то счетчик будет равен одному (когда его будут сравнивать с самим собой), но у меня почему то этот иф не работает и счетчик увеличивается каждый цикл независимо от значений, почему? А про обнуление это точно, спасибо

Ответы3954739982

6 авг, 22:10 #95 #1039547

>>1039462
Кстати заметил, на этапе инициализации ты создаешь вектора размера n, а потом пушаешь еще значения. Создавай или пустые вектора или не пушай, а присваивай, обращаясь по индексу (a = temp).
Счетчик, походу, по этому и увеличивается.

Ответы41004

7 авг, 09:28 #96 #1039854

>>1039381
Я хз как кодировать на Си, но алгоритм такой:
Берем первый элемент X далее пробегаемся по массиву X+1 и делим каждый на X если резуьтат деления 1 без остатка. значит мы нашли повторяющийся элемент.
ну и сообственно от этих данных строим массив.
Если результат деления не 1, то пустое значение, если результат 1, то пишем элемент.
Как то так.
На питоне бы ебанул на СИ хз как

Ответы39859

7 авг, 09:58 #97 #1039859

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

Ответы39870

7 авг, 10:17 #98 #1039870

>>1039859
какой нахуй квадрат. ты береш первый элемент массива и делишь все элементы, потом второй и так далее.

Ответы39886

7 авг, 10:55 #99 #1039886

>>1039870
> ты береш первый элемент массива и делишь все элементы
(n-1) операций,
> потом второй
(n-2) операций.
> и так далее
(n-3)
...
1

Сумму сам найдешь?

Ответы39896

7 авг, 11:09 #100 #1039896

>>1039886
n(n-1)/2 ~ O(n^2).
Тогда как эту задачу можно решить за O(nlogn).

Кроме того, зачем использовать деление, если можно тупо сравнивать элементы?

Ответы39954

7 авг, 12:45 #101 #1039954

>>1039896
>nlogn
блеа пиздец весь матан забыл. Братюни подскажите че почитать, чтоб освежить память?

Ответы39958

7 авг, 12:50 #102 #1039958

>>1039954
Да по алгоритмам и структурам данных что-нибудь стандартное почитай. Тут от матана только логарифм и O-нотация.
Просто гугли "алгоритмы и структуры данных". Там видео, статьи, книги, вики. Что нравится больше, то и изучай.

7 авг, 13:37 #103 #1039982

>>1039462
Какой интересный сайт, первый раз такое вижу, 10/10 идея.

Есть что-то такое в несколько раз сложнее? Я с другого языка перекатываюсь, и мне бы стоило попривыкать к стандартной библиотеке. А то всё руки тянуться вручную все массивы на указателях делать и прочее такое.
А тут попробовал для твоей задачи std::unordered_map из поста выше (я никогда ничего такого не использовал — в моём языке любой двухсвязный список вручную нужно было для каждого типа, шаблонов то нет. Максимум, у меня была обёртка вокруг указателей, так что указываешь размер типа и он создаёт для неё этот список. Но при обращении к любому элементу нужно использовать приведения типов. И ещё там куча лишних вызовов функций возникает и куче другого мусора.) и это бесподобно, в три тысячи раз удобнее - решение за минуту пишется, где раньше пришлось бы или насиловать массивы, или копировать откуда-то код для аналога std::map изменяя все типы.

Ответы44075

7 авг, 17:14 #104 #1040090

Читаю учебник по крестам, пишу мелкие проекты вроде крестиков и ноликов, снейк. Пока не собираюсь(в ближайшие 2 года) искать работу программистом, начинаю учебу, первый курс. Стоит идти изучать фреймворки или лучше сосредоточиться на изучении языка, изучая разные библиотеки и так далее?

Ответы4012340144

7 авг, 17:44 #105 #1040123

>>1040090
На крестах не то, чтобы легко работу найти. Или легко, но разгребать какое-нибудь легаси на пару с Delphi.
Если есть желание, то можешь какой-нибудь другой язык учить. Даже если кресты останутся твоим основным языком, изучение языков даёт пощупать другие концепции и подходы, что улучшит твои навыки программирования в целом .

Ответы40250

7 авг, 18:26 #106 #1040144

>>1040090
Там если этот один стандарт читать и пытаться понять его займет столько времени, что уже новый стандарт выйдет. Касательно работы, есть множество контор, некоторые требуют глубокого знания языка (SFINAE и прочие шаблонные ништяки), в других случаях хватает только поверхностного знания языка (что такое деструкторы, порядок инициализации, время жизни, и др), короче, база, потому что шаблоны, конечно, полезны, но никто подход OOD еще не отменял, поэтому, кроме случаев контейнеров, бывает, обходятся и без них.
Вообще, посмотри на Python, например, он вообще, в целом универсальный, выразительный и простой язык, в дальнейшем его понимание может пригодиться для постройки прототипов (а прототипы зачастую нужны, чтобы проверить, верна ли твоя теория по поводу склеивания паттернов или нет или еще каких), да и с крестами вяжется вполне нормально, так что его преимущества можно будет тоже подтянуть.
Ну а фреймворки - это дело такое, их пиздецки много (если речь идет не о монструозных, наподобие Qt), там уже по интересам, куда пойдешь, может будешь всю жизнь макакой писать GUI для макдака, или, например, уйдешь в сетевое программирование (а там уже придется изучать системные вызовы), так что тут дело неоднозначное.

Ответы40250

7 авг, 20:52 #107 #1040250

>>1040144
>>1040123
Спасибо за ответы. Я собираюсь идти по пути C++/Java/python. С++ скорее для себя изучаю, как основу программирования. Там где я живу(Кипр) вряд ли есть работа для мидлов и джунов на С++. Тогда продолжу заниматься по учебнику, наверну Effective C++ потом есть книга про 47 задач в С++ и перейду к Джаве, она будет у меня еще в университете.

8 авг, 03:12 #108 #1040413

Я что-то понять не могу, сколько чисел могут хранить float и double после точки, может кто подсказать?

Ответы40417404224042840457

8 авг, 03:48 #109 #1040417

>>1040413
Число с плавающей запятой представляется с использованием мантиссы, показателя степени и знака. Это ДВОИЧНОЕ число, скорее всего, ты не сможешь представить его в виде конечной десятичной дроби, поэтому при вычислениях выходит пиздец сколько знаков. Точное значение дает только оригинальное двоичное представление в формате (+/-) M * 2^F.

Ответы40421

8 авг, 03:54 #110 #1040418

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

Ответы4060440643

8 авг, 03:58 #111 #1040421

>>1040417
Пиздец какой-то, пожалуй я пропущу этот момент.

8 авг, 04:01 #112 #1040422

>>1040413
Сколько реализовано, столько и хранят. float и double - числа в формате IEEE 754.
http://en.cppreference.com/w/cpp/types/numeric_limits

8 авг, 04:27 #113 #1040428

>>1040413
Пришло время читать 754 стандарт.

Если правильно помню, то для float вроде бы около 26 цифр после запятой максимум. Алсо printf майкрософта не умеет их все напечатать.

Ответы4043040755

8 авг, 05:49 #114 #1040430

>>1040428
Float 7 значащих, double 15. Число цифр после запятой нельзя предсказать. Ну что же вы, плюсисты!

Ответы4044440755

8 авг, 06:26 #115 #1040444

>>1040430
> Ну что же вы, плюсисты!
Они плохо разбираются в десятичных числах.

sage 8 авг, 07:28 #116 #1040457

>>1040413
На практике похуй, сколько там десятичных циферок после запятой (тем более, это сложно определить и зависит от компилятора и от самого числа). Ты для чего такой вопрос задаешь? Какая у тебя задача?

Ответы40755

8 авг, 07:30 #117 #1040458

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

Ответы40460

8 авг, 07:34 #118 #1040460

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

Ответы40464

8 авг, 07:38 #119 #1040464

>>1040460
Если я правильно понимаю, то со словом static все экземпляры класса будут разделять эту переменную, мне это не нужно.

Ответы4046740470

8 авг, 07:42 #120 #1040467

>>1040464
Можно запилить структорой в одно приватное поле.

Ответы40469

8 авг, 07:43 #121 #1040469

>>1040467
Не решение проблемы.

Ответы4047340474

8 авг, 07:45 #122 #1040470

>>1040464
т.е.

class huias {
private:
//...
struct {
int huint;
std::string huing;
std::vector huector;
} p_myMethodData;
//...
};

8 авг, 07:47 #123 #1040473

>>1040469
Решения проблемы всего два: ты либо сохраняешь данные в объекте, либо не сохраняешь. Сохранение в отдельной структуре просто минимизирует засерание интерфейса.

8 авг, 07:49 #124 #1040474

>>1040469
И, потом, как ты их инициализируешь? Как узнаешь, что они не инициализированные? Что возвращает метод?

8 авг, 11:20 #125 #1040534

#define BOOL(param, cliopt) \
s += sprintf(s, " %s", (param) ? cliopt : "no-"cliopt);
ошибка: невозможно найти оператор строкового литерала «operator""cliopt» с аргументами «const char [4]», «long unsigned int»
Я не шарю в cpp, мне только скомпилировать прогу, msys2 ругается.

Ответы4066840755

8 авг, 11:26 #126 #1040535

Решил тут изучать этот язык и тут же столкнулся с проблемой. В книге приведена программа
while (std::cin >> value)
{
a+=value;
}
cout <<a;
Но у меня эта программа не работает. После ввода чисел ничего не происходит. Почему так?
Алсо, сейчас вроде уже c++20 выходит, а учебник по 11 версии, это сильно плохо?

Ответы4054740548

8 авг, 11:37 #127 #1040547

>>1040535
Вcе работает:
http://ideone.com/hpDEUh

Ответы40552

8 авг, 11:40 #128 #1040548

>>1040535
C++11 считается хипсторским новшеством, которое до конца ещё не все компиляторы поддерживают. Т.е., даже на C++17 писать ещё рано.

Ответы4055440755

8 авг, 11:42 #129 #1040552

>>1040547
Если добавить букву в конце то и у меня работает, просто в книжке про это написано не было, просто ввод чисел и заебись, вот я и подумал, что сделал что то не так

Ответы40755

8 авг, 11:46 #130 #1040554

>>1040548
Маня, везде уже С++14, кроме несчастных людей, с поддержкой WinXP и прочим некроговном некромамонта.

Ответы40559

8 авг, 11:52 #131 #1040559

>>1040554
Везде это где? MSVC только с 17 более менее начала стандарт поддерживать, gcc с 5 (учитывая что актуальная для RHEL версия - 4.8.5).

Ответы40567406714075540847

8 авг, 12:00 #132 #1040567

>>1040559
Я скажу по другому - единственная контора, где был C++98, это чуваки, делающие что-то для военки под WinXP. Во всех остальных конторах, о которых я знаю - минимум С++14. В том же Яндексе - Шланг 4.0. У меня в конторе - чуваки балуются с g++7, хотя в продакшене 5.4 (которая умеет в 14). На прошлом месте работы я писал в 2015 студии, которая умела в практически весь 14. И везде так. Самое сложно было лет 5 назад уйти с говнокомпиляторов на что-то модерновое, с поддержкой 11. А сейчас это уже проще.

Ответы40574

8 авг, 12:03 #133 #1040574

>>1040567
Во всех более менее крупных конторах тем не менее 11 это предел мечтания, опять же потому что энтерпрайзные линуксы держат маааксимум 138-139 ABI. Соответственно остается ubuntu, но там денег нет как таковых чтобы под нее продукты делать в 2к17.

В Яндексе возможно, эти жополазы всегда славились любовью к бете альфы последнего гцц в продакшене.

MSVC15 поддерживает 14 стандарт на пол шишечки. https://msdn.microsoft.com/en-us/library/hh567368.aspx

8 авг, 12:49 #134 #1040604

>>1040418
OpenGL

Ответы40635

8 авг, 13:42 #135 #1040621

26 Кб, 909x409

9 Кб, 424x231

Товарищи эксперты, разъясните зеленому. Имеется такой говно-класс (не кидайтесь тапками, он специально такой говенный); собственно, я хотел разобраться с forwarding references. Для этой цели имеется не менее говенная функция func(). В итоге, все вроде бы работает так, как надо, но одного я не могу понять: почему _s сохраняет свое значение при вызове конструктора, принимающего std::string&& _s ? Здесь же, по сути, в момент вызова s(_s) должен вызываться перемещающий конструктор, ибо _s имеет тип std::string&&, но _s сохраняет свое значение.
Если кто-нибудь объяснит тупому, буду благодарен

Ответы40622406784075540846

9 Кб, 846x553

8 авг, 13:43 #136 #1040622

>>1040621
забыл вывод

8 авг, 13:58 #137 #1040635

>>1040604
А может быть ты знаешь? Я не очень хорошо в этом разбираюсь, может быть что-то очевидное пропустил.
Есть DirectDraw. Если выводить двухмерную графику через него, то даже на древнем ноутбучном целероне без видеокарты оно выдавало 60 фпс, даже если там в два слоя экран зарисовать. Если я просто вывожу что-то размером с экран на том же ноутбуке через openGL, то выше 40 фпс мне не оторваться, даже если отключить все линейные интерполяции и корректность перспективного преобразования поставить в минимум. Там же все эти матрицы преобразования и прочий мусор считаются для каждого пикселя, никаких оптимизаций от 2d оно не использует.
Сейчас эта проблема ушла в прошлое, конечно, но всё-равно, пустое opengl-окно загружает ядро процессора где-то на четверть, когда полноэкранная directdraw-программа где-то на 2-3% (да и не пустая тоже, если посмотреть на древние dd-игры).
Есть glRasterPos/glDrawPixels которые решают эту проблему, но там вроде как только масштабирование и простейшие фильтры на цвета есть, а я совершенно точно видел в играх плавные повороты в 2d. И новые версии opengl в общем-то вовсе не содержат эти glDrawPixels. Как быть? Эту dd-производительность можно вытащить не используя gl-контекст версии 1.1?

Ответы4068140755

8 авг, 14:10 #138 #1040643

>>1040418
в опенгл рисуй с ортогональной матрицей трансформации. А вообще - забей на древние универские компы, в которых стоит железо, на которое насрать вообще всем. Если надо что-то показывать - спизди любой ноутбук с коре2дуо, там уже опенгл 3.х работает

8 авг, 14:55 #139 #1040668

>>1040534
А что конкретно этот макрос должен делать? Похоже на какую-то отладочную фигню. Можно попробовать просто выпилить его тело, или заменить на 's+="foobar"'

8 авг, 14:57 #140 #1040671

>>1040559
C L I O N
L
I
O
N
Он буквально только пару фич 17го стандарта не умеет.

Ответы4068040755

8 авг, 15:06 #141 #1040678

>>1040621
>Foo(std::string&& _s) :s(std::forward(_s))

У _s тип rvalue-ссылки, но само по себе _s - это lvalue-значение (к нему можно обратиться по имени, потыкать что-то, поменять). Получается & && => &.

Ответы4072840859

8 авг, 15:07 #142 #1040680

>>1040671
Пять гигабайт памяти для хелловорлда - это норма!

Ответы40684

8 авг, 15:08 #143 #1040681

>>1040635
DirectDraw сами майки давно закопали, сейчас ЛЮБОЕ 2d на самом деле 3d, без матрицы искажения перспективы.
Тормозит, потому что пишешь через легаси, на огле не имеет смысл писать если его версия старше 3.0 (нужны свежие драйверы видюхи, и может не взлететь на совсем некроговне). Учи пайплайны и шейдеры, чтобы не быть батхертом, и пиздуй в огл-тред /gd.
Не плохой старт можно освоить через opengl-tutorial.org

Ответы40754

8 авг, 15:10 #144 #1040684

>>1040680
Ты ебанутый крестовый код в интерпретаторе гонять? Конпеляй нормально.

Ответы40755

8 авг, 16:02 #145 #1040725

сразу прошу прощения за нуфаговопрос, но в связи с тем что не могу сформулировать запрос гуглу пишу сюда.

есть функция с тремя аргументами вида:
someClass::func (int a, bool b = false, int c = -1);

Как видно, "b" и "c" имеют дефолтные значения.
Можно ли как-то сделать так, чтобы третьему аргументу (с) надо было обязательно присваивать значение при вызове функции в том случае, если явно задается второй (b)? Помимо перегрузки, конечно.

Суть в том, что мне нужно, чтобы аргумент "с" обязательно был задан, только когда b = true, для случая, когда b=false, значение "с" просто не используется.

Ответы407354075540757

8 авг, 16:07 #146 #1040728

>>1040678
Большое спасибо

8 авг, 16:18 #147 #1040735

>>1040725
А зачем тебе тогда b? Сделай две перегрузки, первую только с параметром a, а вторую с a и с. Общий функционал вынеси в отдельный метод. Если не хочешь светить его, можешь объявить в анонимном пространстве имен внутри сорца.

12 Кб, 410x114

8 авг, 16:34 #148 #1040754

>>1040681
>сейчас ЛЮБОЕ 2d на самом деле 3d
Ой ли? Почему тогда Age of Empires II 2000 года всё ещё задействует ядро максимум на 2-3%? Тогда как ремейк AoE II HD (сделанный уже как 3d для совместимости с win7 и старше) ядро полностью загружает, при том, что скриншоты почти 1 в 1 совпадают? Ясно конечно, что они намутили с двойной буферизацией и из-за ожидания буфера там ядро полностью загружается даже пустой сценой. Но даже если это исправить в своём коде - меньше 25% ядра ну никак не выходит загружать (если выводить хоть какое-то изображение на весь экран в "3d режиме" с матрицами).
>Тормозит, потому что что пишешь через легаси, на огле не имеет смысл писать если его версия старше 3.0
Я знаю как использовать новые версии гл. Почему не имеет смысла, объясни пожалуйста? Создавая древний 1.1 контекст мне всё-равно доступен весь функционал 3.0+ через расширения без потери производительности и с сохранением древних функций.
Я сейчас переделал одну небольшую хрень с 1.1 на 3.0+, загнал свои glBegin/glEnd в VAO и всё такое. Разницы - никакой вообще, только появилось много лишних строк для этих массивов вершин и шейдеров-заглушек. Ради чего мне использовать 3.0+ сейчас? Я не собираюсь писать под телефоны на GL ES, и мне есть чем заняться, кроме как писать обёртку вокруг вершинных массивов (для того чтоб получить удобный аналог glBegin/glEnd на 3.0+). Имхо, это всё-таки удобно, когда нужно три треугольника для мелкой детали интерфейса нарисовать, чем каждую точку хранить в массиве или буфере.

Ответы40763

8 авг, 16:35 #149 #1040755

>>1040430
>>1040428
>сли правильно помню, то для float вроде бы около 26 цифр после запятой максимум.
>Float 7 значащих, double 15.
В каком стандарте так написано?
>>1040457
>тем более, это сложно определить и зависит от компилятора и от самого числа
http://en.cppreference.com/w/cpp/types/numeric_limits
Единственное, о чём там не сказано - это denormalised-числа.
>>1040534
У тебя cliopt не определён. Когда он определён, у тебя будут соединены две строки. Когда он не определён, будет такая шняга, как эта (компилятор ищет user-defined literals).
Нужно больше кода, тогда подскажу. Олсо:
> the \ character must be the last character on the line.
>>1040552
operator>> объекта std::istream возвращает другой std::istream. std::istream преобразуется в bool (как того требует использование выражения в скобках около while/if) следующим образом:
http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool (снизу табличка)
>>1040548
>которое до конца ещё не все компиляторы поддерживают.
ГЦЦ и кланг поддерживают, а Студии всегда насрать на это.
>>1040559
>учитывая что актуальная для RHEL версия - 4.8.5).
https://gcc.gnu.org/gcc-4.8/cxx0x_status.html
С++11 там есть.
>>1040621
Выбирается идеально подходящий оверлод конструктора - принимающий ссылка на конст-строку, никакого мува там быть не может, аргумент-то:
1) конст
2) лвалью, то есть для него будет вызван деструктор в другом месте программы, и будет пиздец
Даже если бы ты сделал не const-ссылку, то никакого мува там бы не было по причине 2, там было бы копирование. Мув применяется только для рвалью, а передать лвалью в качестве рвалью-ссылки без std::move() ты не можешь.
>>1040635
>Есть DirectDraw.
Это же, типа, рисование во фреймбуфер процессором? Попробуй так же делать в ОпенГЛ.
https://open.gl/framebuffers
Про ДиректДрав что-то знаю, про 3Д ничего не знаю.
>я совершенно точно видел в играх плавные повороты в 2d
Это всё вычисления на процессоре.
>>1040671
Клион - это не компилятор.
>>1040684
Жир - часть рациона.
>>1040725
>Можно ли как-то сделать так, чтобы третьему аргументу (с) надо было обязательно присваивать значение при вызове функции в том случае, если явно задается второй (b)? Помимо перегрузки, конечно.
Нет.
Но если тебе прям очень сильно хочется выебнуться, то ты делаешь следующее:
http://coliru.stacked-crooked.com/a/e453ba6921447a67
Я лишь не смог защитить функцию от передачи в неё строки.

8 авг, 16:35 #149 #1040755

>>1040430
>>1040428
>сли правильно помню, то для float вроде бы около 26 цифр после запятой максимум.
>Float 7 значащих, double 15.
В каком стандарте так написано?
>>1040457
>тем более, это сложно определить и зависит от компилятора и от самого числа
http://en.cppreference.com/w/cpp/types/numeric_limits
Единственное, о чём там не сказано - это denormalised-числа.
>>1040534
У тебя cliopt не определён. Когда он определён, у тебя будут соединены две строки. Когда он не определён, будет такая шняга, как эта (компилятор ищет user-defined literals).
Нужно больше кода, тогда подскажу. Олсо:
> the \ character must be the last character on the line.
>>1040552
operator>> объекта std::istream возвращает другой std::istream. std::istream преобразуется в bool (как того требует использование выражения в скобках около while/if) следующим образом:
http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool (снизу табличка)
>>1040548
>которое до конца ещё не все компиляторы поддерживают.
ГЦЦ и кланг поддерживают, а Студии всегда насрать на это.
>>1040559
>учитывая что актуальная для RHEL версия - 4.8.5).
https://gcc.gnu.org/gcc-4.8/cxx0x_status.html
С++11 там есть.
>>1040621
Выбирается идеально подходящий оверлод конструктора - принимающий ссылка на конст-строку, никакого мува там быть не может, аргумент-то:
1) конст
2) лвалью, то есть для него будет вызван деструктор в другом месте программы, и будет пиздец
Даже если бы ты сделал не const-ссылку, то никакого мува там бы не было по причине 2, там было бы копирование. Мув применяется только для рвалью, а передать лвалью в качестве рвалью-ссылки без std::move() ты не можешь.
>>1040635
>Есть DirectDraw.
Это же, типа, рисование во фреймбуфер процессором? Попробуй так же делать в ОпенГЛ.
https://open.gl/framebuffers
Про ДиректДрав что-то знаю, про 3Д ничего не знаю.
>я совершенно точно видел в играх плавные повороты в 2d
Это всё вычисления на процессоре.
>>1040671
Клион - это не компилятор.
>>1040684
Жир - часть рациона.
>>1040725
>Можно ли как-то сделать так, чтобы третьему аргументу (с) надо было обязательно присваивать значение при вызове функции в том случае, если явно задается второй (b)? Помимо перегрузки, конечно.
Нет.
Но если тебе прям очень сильно хочется выебнуться, то ты делаешь следующее:
http://coliru.stacked-crooked.com/a/e453ba6921447a67
Я лишь не смог защитить функцию от передачи в неё строки.

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

8 авг, 16:37 #150 #1040757

>>1040725
Прямо так, нельзя. Было предложение в стандарт, чтобы ввести пустые аргументы через зяпятые (типа как for. Foo(fuck, , you), но не взлетело.

8 авг, 16:43 #151 #1040758

>>1040755
Ну, под клионом я и его бекенд подразумевал, он может и в нативный код с оптимизациями.

Ответы40769

8 авг, 16:47 #152 #1040763

>>1040754
1) кривой порт, той игры, например?
2) с пустым окном конечно разницы не будет. Попробуй на легаси реализовать отложенное освещение, например.
3) нужно не обертки делать, а думать над архитектурой рендерера

Ответы40799

8 авг, 16:54 #153 #1040769

>>1040758
Ты путаешь IDE и компилятор, перестань делать это.

Ответы40785

8 авг, 17:16 #154 #1040785

>>1040769
Но клион это не ide (или я с чем-то путаю)

Ответы4078640790

8 авг, 17:18 #155 #1040786

>>1040785
Блин, точно, я clang имел ввиду

8 авг, 17:23 #156 #1040790

>>1040785
Ну да, клион - это make-файлы, gcc - это ide, а grub - компилятор, ты все правильно понял.

Ответы40793

8 авг, 17:25 #157 #1040793

>>1040790
Я же ниже пофиксился

8 авг, 17:30 #158 #1040799

>>1040763
2) Почему бы и нет, попробую на днях. Почту, телеграмм? Куда написать о результатах, если тебе интересно?

Ответы40838

8 авг, 18:42 #159 #1040838

>>1040799
Почему бы не в этот тред?

8 авг, 18:57 #160 #1040846

>>1040621
>Если кто-нибудь объяснит тупому, буду благодарен
Ты, как и многие ньюфаги, путаешь типы с категориями значений.
В s(_s), _s это lvalue с типом std::string. lvalue не биндится к rvalue-ссылкам, поэтому перемещающий конструктор вызван быть не может, т.к. у него параметр — rvalue-ссылка.
Если написать s(std::move(_s)), то перемещающий конструктор будет вызван, т.к. std::move(_s) это xvalue типа std::string.

8 авг, 19:01 #161 #1040847

>>1040559
>учитывая что актуальная для RHEL версия - 4.8.5
В RHEL ставится devtoolset-6 с gcc 6.2.1

Ответы41026

8 авг, 19:25 #162 #1040859

>>1040678
>>Foo(std::string&& _s) :s(std::forward(_s))
Foo(std::string&& _s) :s(std::move(_s))

Ответы4089240938

8 авг, 19:53 #163 #1040892

>>1040859
Обе работают, но forward преобразует в ссылку, соответствующую типу, таким образом предпочтительнее в таких случаях.

Ответы4094840954

8 авг, 20:28 #164 #1040938

>>1040859
Большое спасибо
Голова кругом весь день с этого

8 авг, 20:39 #165 #1040948

>>1040892
Мейерс считает, что std::move предпочтительнее. Извени.

Ответы41043

8 авг, 20:45 #166 #1040954

>>1040892
>но forward преобразует в ссылку, соответствующую типу
Нихуя не понял.

Ответы41043

8 авг, 21:34 #167 #1040987

SDL2 подходит для реализации игры, где в основном на экране менюшки и статичная картинка,или надо чего попроще/посложнее?

8 авг, 21:34 #168 #1040988

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

8 авг, 21:58 #169 #1041004

>>1039547
Подредактировал, но теперь, когда в массиве есть повторяющиеся значения он добавляет в новый массив 0. Откуда он берется не понимаю. Не можешь подсказать откуда он появляется и как от него избавиться?
>>1039440
>попробуй сделать на std::map или std::unordered_map.
Такие штуки я пока еще не проходил))

Ответы4101941062

8 авг, 22:11 #170 #1041019

>>1041004
Я у мамы сишник, но вопреки всему такое решал весьма неоптимально (2^n грубо округляя). Если оптимизации не пытаться делать, то задача простая

Ответы41058

8 авг, 22:14 #171 #1041024

>>1040755
>С++11 там есть.
Речь за 14 шла.

8 авг, 22:14 #172 #1041026

>>1040847
Пока админ не ебанутый - не ставится.

Ответы41027

8 авг, 22:15 #173 #1041027

>>1041026
Дебил.

Ответы41028

8 авг, 22:16 #174 #1041028

>>1041027
Да, тоже вариант. Но нормальный админ на это не пойдет.

Ответы41030

8 авг, 22:17 #175 #1041030

>>1041028
Почему?

Ответы41033

8 авг, 22:22 #176 #1041033

>>1041030
Потому что на не-девелоперском RHEL'e за добавление rhscl расширений велика вероятность получить дроп лицензии, стоит, которая, на секунду, не мало даже для небольшого 16-сокетного сервера.

http://www.linuxcenter.ru/shop/distros/linux-distros/Red_Hat_Enterprise_Linux_for_IBM_POWER_Premium_16_sockets_Up_to_120_LPARs_with_Smart_Management_3_Years/

Ответы41034

8 авг, 22:24 #177 #1041034

>>1041033
А зачем на не-девелоперском RHEL'е беспокоиться о версии gcc?

Ответы41035

8 авг, 22:24 #178 #1041035

>>1041034
А как ты будешь на нем деплоится?

Ответы41042

8 авг, 22:43 #179 #1041042

>>1041035
>деплоится
Если я правильно понял твоё хуесосовское наречие, ты говоришь о запуске.
Для запуска важна версия libstdc++, а не gcc.

Ответы41044

8 авг, 22:44 #180 #1041043

>>1040954
lvalue-ссылку преобразует в lvalue-значение, rvalue-ссылку преобразует в rvalue-значение.
В крестах кроме rvalue-lvalue-ссылок есть ещё аналогичная таксономия значений, которая принимает участие во всей этой мишуре с rvalue-lvalue дичью.
Сам я всю таксономию тоже слабо осознаю.

>https://www.justsoftwaresolutions.co.uk/cplusplus/core-c++-lvalues-and-rvalues.html
>Finally, a named object declared with an rvalue reference (declared with &&) is also an lvalue. This is probably the most confusing of the rules, if for no other reason than that it is called an rvalue reference. The name is just there to indicate that it can bind to an rvalue (see later); once you've declared a variable and given it a name it's an lvalue. This is most commonly encountered in function parameters.
>>1040948
Может Мейерс и прав.

Ответы41050

8 авг, 22:44 #181 #1041044

>>1041042
Ебать ты гений, а откуда ты высрешь под рхелом нужную версию libcxx?

Ответы41046

8 авг, 22:46 #182 #1041046

>>1041044
https://stackoverflow.com/a/15602073
> 2) Statically linking libstdc++ would work around the problem, but you don't need to, because that's what the Red Hat Developer Toolset (devtoolset) does for you anyway. The whole point of devtoolset is that it allows you to use a newer GCC and newer libstdc++ but without creating any run-time dependencies on the newer libstdc++ library. The compiled executables only need the system version of libstdc++.so that is always present on RHEL/CentOS, even systems without devtoolset installed.

Ответы41047

8 авг, 22:47 #183 #1041047

>>1041046
Збс, ты решил задачу для laba1, теперь слинкуй статически все зависимости чтобы не было ABI-конфликтов.

Ответы41049

8 авг, 22:49 #184 #1041049

>>1041047
-D_GLIBCXX_USE_CXX11_ABI=0

Ответы41052

8 авг, 22:50 #185 #1041050

>>1041043
>Сам я всю таксономию тоже слабо осознаю.
Там всё очень просто. Как только осознаешь, что у выражений есть 2 свойства: тип и категория значения.

119 Кб, 1134x756

8 авг, 22:56 #186 #1041052

>>1041049
Ну и пройдя полный цикл ты таки сам родил что придется отказаться от нового ABI. Браво.

Ответы41154

8 авг, 23:10 #187 #1041058

>>1041019
А можешь пояснить откуда в ауте нули берутся
Например я ввожу :
5
1 2 3 2 3
И мне вместо того что бы выдать просто 1, выдает 1 0 0 0 0
Откуда эти 0 берутся и как их пофиксить?

Ответы41073

8 авг, 23:22 #188 #1041062

>>1041004
>Подредактировал
Код показывай.
Но наперёд могу предположить что вектор с результатом у тебя сразу на n элементов, ты не можешь знать сколько их будет.

Ответы41077

8 авг, 23:42 #189 #1041073

98 Кб, 480x854

39 Кб, 480x854

>>1041058
Хуй его знает, вот тебе мое всратое рабоче-крестьянское решение. В ТЗ сказано тупо вывести уникальные элементы, а не копировать их в отдельный массив.

8 авг, 23:48 #190 #1041077

>>1041062
отклеилась ссылка, я и не заметил https://pastebin.com/gsMnzzRC

Ответы4108041102

9 авг, 00:01 #191 #1041080

>>1041077
> for (int i = 0; i < n; i++)
в цикле, в котором ты выводишь элементы вектора b, условие продолжения цикла неверное.

Правильно так:
for (int i = 0; i < b.size(); i++)

Или так:
for (const auto& i: b)

мимо другойанон

Ответы4110241124

9 авг, 00:11 #192 #1041086

>>1036675 (OP)
Есть файл с данными вида:

header число
type число
type число
type число

Как из него выделить все числа и обработать их соответствующим образом, как указано в префиксе? Паттерн state machine и регэксы?

Ответы41098

9 авг, 00:40 #193 #1041098

>>1041086
ifstream + operator >> Wow

9 авг, 00:46 #194 #1041102

>>1041077
Этот >>1041080 правильно сказал. В итоге ведь в векторе b может быть [0..n] элементов.

Ответы41124

9 авг, 02:01 #195 #1041124

>>1041080
>>1041102
Спасибо большое аноны!

9 авг, 04:14 #196 #1041154

>>1041052
Ты что-то пытался кукарекать про установку devtoolset для деплоя... Короче, обтекай молча.

9 авг, 10:23 #197 #1041198

Двач, подскажи, мне нужно что-бы было как в классе только без класса, пишу в заголовочном файле глобальные переменные, функции должны менять значения этих переменных, только у меня происходит "multiple definition", я знаю про extern и перенос определения переменных в исходный файл. У меня вопрос, это единственный способ обхода multiple definition и возможность работы по описанному мною способу? Как вообще в C это делали?

Ответы412204122641280

9 авг, 11:14 #198 #1041220

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

struct huiuct {
int huint;
char huiar;
} huiuct_t, *phuiuct_t;

bool huiunc(phuiuct_t object, int param, int huiam) {
if (!object) {
return true;
}
return false;
}

Ответы41225

9 авг, 11:25 #199 #1041225

>>1041220
> typedef struct huiuct {
Фикс.

9 авг, 11:26 #200 #1041226

>>1041198
В хедерах перед объявлениями добавь extern (без определений!), в исходниках сами определения.

// fuck.h
extern long long YRMOM;

// fuck.c
#include "fuck.h"
YRMOM = GetYrMom();

// somewhereelse.h
#include "fuck.h"
void fuckYrMom()
{
. short yrDick;
. PutIn(yrDick, YRMOM);
}

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

9 авг, 13:03 #201 #1041280

>>1041198
В хедере объявляешь переменные "extern". Для каждого хедера с глобалами/статиками делаешь .c-файл, в которой ты пишешь то же самое, но без extern.

9 авг, 21:17 #202 #1041596

А возможно ли записать класс в файл в бинарном виде, как структуру в Си?

Ответы4161041686

9 авг, 21:37 #203 #1041610

>>1041596
можно, нахуя?
что с указателями делать?

Ответы41612

9 авг, 21:39 #204 #1041612

>>1041610
А как мне собственно попроще сохранить на диске все данные, которые располагаются в различных экземплярах классов ( или как правильно называть?). Мой байтоебский мозг ничего лучше, чем напрямую скинуть байтики, не придумал.

Ответы41613

9 авг, 21:41 #205 #1041613

>>1041612
гугли сериализация с++
что с указателями?
что с не ПОД-типами типа строк, мап, векторов?

Ответы41614

9 авг, 21:42 #206 #1041614

>>1041613
я к тому, что руками придется писать то, что нужно, это тебе не жаба.

9 авг, 23:35 #207 #1041666

В каком языке самое каноничное ооп? Я думаю на с++, а вы что скажете?

Ответы4167141704

9 авг, 23:50 #208 #1041671

>>1041666
Smalltalk

10 авг, 00:56 #209 #1041686

>>1041596
Если класс trivial (т.е. все данные в нём интегральны) - сохранение класса на диск путём копированием из памяти будет правильным.

Ответы41784

10 авг, 02:34 #210 #1041704

>>1041666
Eiffel.

10 авг, 02:37 #211 #1041705

Есть std::string. Можно ли из него как-то по быстрому вырезать кусок в духе:

std::string s = "......";
auto it1 = s.begin() + pos1;
auto it2 = s.begin() + pos2;
it1 = it2;

?

Ответы4170641710

10 авг, 02:45 #212 #1041706

>>1041705
http://en.cppreference.com/w/cpp/string/basic_string/substr
>it1 = it2;
Чозанах?

10 авг, 02:57 #213 #1041710

>>1041705
>по быстрому вырезать кусок
стринг_вью?

10 авг, 09:35 #214 #1041778

Посоны, тяжело ли вкатиться в джуна с вышкой?
И как обстоят дела с работой на С/С++ за рубежом.

Ответы4178141788

10 авг, 09:47 #215 #1041781

>>1041778
В госконтору легко.

Ответы4179141956

10 авг, 09:50 #216 #1041784

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

Ответы41803

10 авг, 09:53 #217 #1041788

>>1041778
зарубеж - украина, бульбостан?
нормально.
Европа - нормально.
СШП - нормально.

Ответы4179141956

10 авг, 09:57 #218 #1041791

>>1041781
Нет, только не в туда. Лучше заняться гомопроституцией, чем в госконтору.
>>1041788
>зарубеж - украина, бульбостан?
Ну это на случай, если в высокодуховной начнется инфернальный пиздец
>Европа - нормально.
СШП - нормально.
А здесь можно поподробнее?

10 авг, 10:34 #219 #1041803

>>1041784
Прочитай вопрос ОПа, уёбок.
>как структуру в Си?
Если тебе не нравится fwrite, то напиши об этом автору вопроса а не мне, рептилоид.

10 авг, 10:59 #220 #1041817

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

Ответы41822

10 авг, 11:11 #221 #1041822

>>1041817
1. C std::vector всё просто, берешь поинтер на первый элемент и передаешь его: &huector.front(). Или, если у тебя проект >= С++11, то там даже есть специальный метод для получения ссылку на массив сырых данных: huektor.data()

2. Списки-хуиски надо сначала преобразовать в векторы-хуекторы, затем см. п. 1.

10 авг, 12:26 #222 #1041875

Привет, хочу вкатиться в кодинг.
С чего начать, с Си или С++?
Читал что лучше с Си, потому что С++ это типо расширенная версия с классами.

Ответы41877418844188542065

10 авг, 12:28 #223 #1041877

>>1041875
Тебя обманули. C++ не требует знаний С и его можно учить независимо.

10 авг, 12:41 #224 #1041884

>>1041875

Учи С конечно же. Сеплэплас это язык для индусо-макак.

Вон одна уже пишет что даже Си знать не надо. Пердолить Страуструпские говноабстракции

10 авг, 12:42 #225 #1041885

>>1041875
что угодно кроме крестов

10 авг, 13:06 #226 #1041891

WinSock2 и WS2tcpip.h какие плюсы и минусы?

Ответы41923

10 авг, 13:31 #227 #1041901

Можете ответить ТВЕРДО и ЧЕТКО, умрут ли кресты в ближайшие 10-25 лет?

Ответы4191941943

77 Кб, 1028x742

10 авг, 13:38 #228 #1041912

Какое же говно эти .h файлы, как люди этим вообще пользуются столько лет?

Выходит, я не могу просто описать наличие типа в .h, а в .cpp уже полностью раскрыть функциональность.
А если таки сделать в .h полное описание структуры, то:
Можно определить метод прямо в структуре или же можно объявить его в структуре, а определить в другом .cpp файле. То есть, варианта определить метод после структуры в .h нет.
Ещё хуже ситуация со статическими методами, их вообще можно только внутри структуры определять.
Аналогично с функциями, inline-функции определять прямо в .h (иначе они будут вовсе и не inline на самом деле, если я правильно понял это всё), а реальные функции в любом случае определять в .cpp, объявлять в .h. Даже если две функции с точки зрения логики программы делают что-то схожее, но одна из них inline, то описать их рядом нет возможности.

Не знаю, какую-нибудь простую идею модульности нельзя внедрить за столько лет? Типа, в каждом файле две части. В первой объявлены все глобальные переменные, функции и структуры для использования из других модулей. Во второй части структуры и функции использующиеся только внутри этого модуля и код для всего из первой части - для inline-функций, для не inline-функций, для статических методов, чтоб всё было однообразно и легко читалось. Так как пары объявлений-определений будут всегда строго в одном файле, всяким компоновщикам-линковщикам не придётся ругаться на множественные определения в разных единицах трансляции и прочие искусственные проблемы. В началах первой и второй части указываются другие востребованные для объявлений или определений внешние модули.
Можно даже обёртку вокруг текущего с++ сделать, которая будет засовывать все определения методов прямо в структуры, распиливать определения inline и не-inline функций в .h и .cpp файл - а для программистов всё будет выглядеть красиво и в одном месте.

Ответы419164208842265

10 авг, 13:43 #229 #1041916

>>1041912
> inline
Лел, G++ вообще игнорирует эту байду и инлайнит, что ему захочется, а что не захочется - не инлайнит, вне зависимости от того, пишешь ты inline или нет.

Ответы4194842266

10 авг, 13:47 #230 #1041919

>>1041901
Твердо и четко отвечаю - нет.

Ответы4193041956

10 авг, 13:49 #231 #1041923

>>1041891
Нинужно будет через 4 года, когда asio впилят в стандарт.

10 авг, 13:57 #232 #1041930

>>1041919
Спасибо, убежал учить Си

10 авг, 14:16 #233 #1041943

>>1041901
определить смерть не забудь

10 авг, 14:29 #234 #1041948

>>1041916
inline не совсем для встраивания функций придуман на самом деле. В крестах это к ODR, а компилятор и без inline может функцию сделать встроенной. Для этих дел есть __forceinline (MSVC) и __attribute__((always_inline)) (GCC, ...)

10 авг, 14:58 #235 #1041956

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

Ответы4195842172

10 авг, 15:01 #236 #1041958

>>1041956
Но если кресты с твоей точки зрения умирают, что к чему столько ненависти? У тебя же конкурентов меньше, одни профиты.

Ответы41973

10 авг, 15:24 #237 #1041973

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

Ответы41975

10 авг, 15:27 #238 #1041975

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

Ответы42026

10 авг, 17:23 #239 #1042026

>>1041975
блядь, ты еще и тупой
это не оскорбление, это факт

Ответы42114

10 авг, 18:16 #240 #1042065

>>1041875
Начни с хаскеля.

10 авг, 19:08 #241 #1042088

>>1041912
>Не знаю, какую-нибудь простую идею модульности нельзя внедрить за столько лет?
Тем, кто привык, по-большому счёту до фени. Остальным не до фени - доля плюсов сокращается.

10 авг, 20:00 #242 #1042114

>>1042026
Ты рвешься ровном месте, это просто факт. Хотя может для тебя это и оскорбление.

10 авг, 20:59 #243 #1042147

Попцаны, как считаете, стоит она того или нет? http://www.ozon.ru/context/detail/id/31924296/

Ответы42274

10 авг, 21:21 #244 #1042164

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

Ответы42328

10 авг, 21:35 #245 #1042172

>>1041956
>В госконтору легко
>рекрутинг
Ебать ты.

11 авг, 00:56 #246 #1042265

>>1041912
>То есть, варианта определить метод после структуры в .h нет.
Есть.

Ответы42283

11 авг, 00:58 #247 #1042266

>>1041916
>> inline
>Лел, G++ вообще игнорирует эту байду и инлайнит, что ему захочется, а что не захочется - не инлайнит, вне зависимости от того, пишешь ты inline или нет.
Говорят, что это зависит от уровня оптимизаций. До -O3 он инлайнит (или нет) только inline-функции, а не-inline функции никогда не инлайнит. При -O3 может инлайнить любые.

11 авг, 01:12 #248 #1042274

>>1042147
Стоит, но можно же так скачать

11 авг, 01:27 #249 #1042283

>>1042265
Как же? Я нее могу нагуглить ничего.

Единственное что могу придумать - обернуть через "#ifdef opr_metod" определение метода в .h , и в одном из .cpp файлов перед #include прописать "#define opr_metod". Но это костыль ещё более кривой и толстый...

Ответы42293

11 авг, 02:03 #250 #1042293

>>1042283
>Как же?
inline

11 авг, 02:13 #251 #1042297

>>1036675 (OP)
Ребята, не думали что компилятор может перехватывать ваши данные и кроме компиляции отправлять их кому следует?
Все ищут вирусы не там где нужно, а на обычный компилятор вряд ли кто то подумает.
Как вам идея?

Ответы4230242328

11 авг, 03:09 #252 #1042302

>>1042297
>Как вам идея?
Куда шапочку из фольги выслать?

11 авг, 03:38 #253 #1042309

Сап.
Помогите, пожалуйста, разобраться с одной вещью.
Меня напрягает необходимость объявления fout в 15 строке
и 31.Можно ли как-то это объявить в одном месте?
Такая же история и с переменными(29,30 строчки). Возможно ли их куда-то поставить в ОДНО место?Для повышения читабельности кода и его структуризации.
Заранее благодарю.
http://ideone.com/ZWkBrv

Ответы42314

11 авг, 04:34 #254 #1042314

>>1042309
В 31 fout не требуется, ты же её вообще не используешь.
>Такая же история и с переменными(29,30 строчки). Возможно ли их куда-то поставить в ОДНО место?
Мм? Ты о чём? Они же и так в одном месте - на соседних строчках. Технически, можно написать в одну строчку, но читаемость от этого не повыситься.
Очень непонятно спрашиваешь, я даже приблизительно не могу предположить что ты имеешь ввиду под "одним" местом. Какой-нибудь пример, как это могло бы выглядеть. Может быть в каком-то другом языке было так, как ты имеешь ввиду?
Самое читабельное, что могу тут придумать - разместить красивый комментарий. Но эдак далеко не уплывёшь.
Писал бы хоть уровень знаний. Складывается впечатление, что ты не слышал даже про глобальные переменные и упоминая их не совсем ясно, то ли это будет оскорблением и тебе покажется, что тебя за дурака держат, то ли ты в самом деле не знаешь о них.
Может объявить один раз в файле глобально fout (и все остальные переменные) вне функций на 9..10 строчке (перед ними придётся прописать строчку "class MainProgramCore;", чтоб можно было объявить переменную objMainProgramCore) и потом использовать всюду, как cin/cout. Не делай этого.

Ответы42316423284248742498

11 авг, 04:37 #255 #1042316

>>1042314
>прописать строчку "class MainProgramCore;"
Наврал, это не так работает.

Ответы42487

11 авг, 06:05 #256 #1042328

>>1042164
хуясе ты ТЗ описал. Давай-ка поконкретнее.

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

>>1042314
fout объявленный на 31 строке не используется дальше, разве компилятор не уведомляет тебя об этом?

Ответы42487

11 авг, 09:25 #257 #1042349

Двач, я тупой, может кто подсказать куда ведёт эта строка? Я уже два часа ищу и не могу найти. https://github.com/glfw/glfw/blob/213dd2d0d6201a1e17dacce2ff35bdc8dd14e309/src/x11_window.c#L2439

Ответы42447

11 авг, 10:01 #258 #1042368

Какие подводные в этой вакансии?

https://rostov.hh.ru/vacancy/22245394?query=C++

Ответы42419

11 авг, 10:43 #259 #1042419

>>1042368
подозреваю, что будет очень долгий испытательный срок в конце которого ВЫ НАМ НЕ ПОДХОДИТЕ

11 авг, 11:29 #260 #1042447

>>1042349
Задай вопрос так, чтобы я его понял - помогуж

Ответы42449

11 авг, 11:37 #261 #1042449

>>1042447
Не знаю что там может быть не понятного, я привёл ссылку которая указывает на строку исходного кода которая выглядит подобным образом - "_glfw.x11.xi.available", так вот мне не понятно, где вообще находятся эти "x11" и "xi"? Я слабовато понимаю в исходных кодах и вообще имею мало опыта в программировании, у меня не получилось найти эти элементы в исходных кодах, может быть вы подскажите?

Ответы4246842865

11 авг, 12:24 #262 #1042468

>>1042449
>_glfw.x11.xi.available
Обычно такие вещи с передней нижней чертой обозначают кишки библиотеки, которые клиентам видеть не надо.
Собственно зачем ты туда лезешь? Возникает какая-то конкретная ошибка?

Ответы42471

11 авг, 12:34 #263 #1042471

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

Ответы42476

11 авг, 12:45 #264 #1042476

>>1042471
Ты на линуксах? Эта штука явно откуда-то из xinput достает доступны ли устройства ввода.
Если работаешь в ide, разберись как у неё работает поиск определения (в visual studio это Go to defenition)

Ответы42477

11 авг, 12:46 #265 #1042477

>>1042476
Да, это мысль поставить ide.

Ответы42865

11 авг, 13:02 #266 #1042487

>>1042328
>fout объявленный на 31 строке не используется дальше, разве компилятор не уведомляет тебя об этом?
Нет, не уведомляет. Спасибо.
>>1042316
Я просто хочу понять этот принцип("разделение обязанностей" через функции).
>>1042314
Вот, понял, когда засыпал думал как раз про глобальные переменные. Сейчас изучу материал, спасибо.
В одно место имелось ввиду объявить один раз в коде и дать объяснение по поводу их назначения. Сейчас я понял то, как это реализовать. Спасибо. Если можешь, ответь на вопрос выше!

11 авг, 13:04 #267 #1042489

Можно ли на Qt написать функцию, отправляющую POST-запрос по опроделенному IP и порту и возвращающую нихуя?

Везде в примерах какие-то сложные классы, клиенты...

Ответы42493

11 авг, 13:08 #268 #1042493

>>1042489
Можно.

Ответы42500

11 авг, 13:15 #269 #1042498

>>1042314
27-30 строчка. Получился "блок", в котором я объявляю переменные. Я правильно всё понял?
http://ideone.com/iL54Ev

Ответы42531

11 авг, 13:20 #270 #1042500

>>1042493
Ой, спасибо. А я-то думал нельзя.

Где есть пример?

Ответы42513

11 авг, 13:43 #271 #1042513

>>1042500
QNetworkAccessManager *huenager = QNetworkAccessManager ();

QNetworkRequest huequest(QUrl("http://huesite.ru));
QByteArray huiarray;
huiarray.append("param=Hello&");
huiarray.append("huiam=world");

huenager>post(huequest, huiarray);

Ответы4251442519

11 авг, 13:45 #272 #1042514

>>1042513
> QNetworkAccessManager *huenager = new QNetworkAccessManager();
> QNetworkRequest huequest(QUrl("http://huesite.ru"));
Фиксики.

11 авг, 13:49 #273 #1042519

>>1042513
> huenager->post(huequest, huiarray);
Ещё фикс.

11 авг, 14:01 #274 #1042531

>>1042498
Да, так сделать можно. Зачем оно только тебе?
А вот правильно это или нет, это как посмотреть. С одной стороны всё работает и с этой точки зрения это верно.
А с другой у тебя может быть переменная требующая явной инициализации. Например, тебе внутри функции нужно изображение. Но в первых строчках функции размер изображения ты ещё не знаешь. Если изображение не умеет менять размер (а даже если и умеет, зачем лишний раз грузить машину изменением размера?), то тебе придётся объявлять переменную не в самом начале, хочешь ты того, или нет.
"for (int i = 0; i < number; i++) " тебя же не мешает, насколько я понял. Доводи до абсурда тогда уж - напиши "int i" в начале, а цикл поменяй на "for (i = 0; i < number; i++) ", лол. Или даже объяви i как глобальную переменную первой строчкой кода до начала любых функций, тогда тебе одного объявления хватит на всю программу. Только будут проблемы с рекурсией, вложенными циклами или многопоточностью. Ну да этого пока что нет, верно?

Ответы42560

11 авг, 14:11 #275 #1042541

Как искать удаленку на С/С++
Только не говорите, что ее нет

Ответы4254842986

11 авг, 14:28 #276 #1042548

>>1042541
нужно обладать конкретными скиллами, кресты тут будут только инструмент
например, быть способным написать бота, что работает в обход gameguard
или быть способным в течении нескольких часов написать рабочий эксплойт на предоставленную 0day уязвимость что не будет валится на каждый чих и по быстрому интегрировать его в предоставленный эксплойт пак или что еще
или же пытаться устроится на toptal, crossover и прочее, но тут надо быть монстром с 10-15 годами опыта в офисе и тереть на инлише более-менее свободно
в ЛЮБОМ случае все это требует просто невьебенных скиллов, вкатывальщикам в 2к17 лучше сразу обоссать самим себя, так будет быстрее и эффективней

11 авг, 14:43 #277 #1042560

>>1042531
Понял, спасибо. Мне просто было интересно конкретно про ту ситуацию, когда одна переменная используется несколько раз в коде(=глобальная). Офк есть ситуация, когда переменная нужна только в рамках одной функции(=локальная), и её нет смысла объявлять в том блоке.
У меня появился небольшой вопрос.
Смотри, допустим, что у меня формат записи в текстовой файл такой:
Name:Price$ (/n ).
Идея такая: я делаю счётчик проданных книг( получается, что я просто считаю кол-во строк через
[code]iout.getline(str, 1024, '\n'); [/code]
Теперь я хочу сделать счёт по полученным деньгам(они стоят в текстовом файле через ":" после имени). Подскажи, пожалуйста, как запилить такое, чтобы считывалось только ПОСЛЕ ":" и до "$"?
Я понял принцип работы getline, но не могу найти нужную функцию для реализации задуманного.
Если знаешь, подскажи, пожалуйста. (ещё лучше будет, если сможешь подсказать где можно подробней прочитать про работы с файлами ввода/вывода в C++, читал на каком-то русском сайте, но очень мало информации про то, что нужно. Только в общих чертах)

Общий код, чтобы было понятно: http://ideone.com/6VPl4Q (37-39)

Ответы4258742602

34 Кб, 806x339

11 авг, 15:44 #278 #1042587

>>1042560
Я тебе не подскажу функцию которая прям сделает всё за тебя (гугли функцию поиска подстроки), очень плохо разбираюсь в этих стандартных функциях. Что мешает сделать такую простую штуку вручную, тебе же только какое-то двоеточие найти?
У тебя же есть str на каждой итерации. Вот и добавь там функцию на три строки (перемещаю u, пока не дойду до двоеточия. Потом прыгаю ещё на символ вперёд и считываю число. atoi - из строки извлекает число, то немногое стандартное, что я помню.).
Можно конечно вручную вырезать именно кусок строки до "$", но я думаю цена там в любом случае в числом представлении и atoi будет достаточно.

Ответы42631

11 авг, 16:21 #279 #1042602

>>1042560
Вот тебе регекспы.
http://ideone.com/qhJSHJ

Ответы42631

11 авг, 17:20 #280 #1042631

>>1042602
>>1042587
Понял, спасибо большое за помощь

11 авг, 22:46 #281 #1042865

>>1042449
>Я слабовато понимаю в исходных кодах
Вот пиздец. Ладно, рассказываю.

_glfw.x11.xi.available - это член available класса (или структуры) xi класса x11 класса _glfw. Найти эти классы та можешь либо текстовым поиском в том же репозитории (если только с форматированием кода не намудрили):
_glfw;
это конец объявления или
_glfw =
это инициализация
и так далее с другими классами.
>>1042477
Попробуй, но ты же опять придёшь сюда и будешь никакующие вопросы задавать.

12 авг, 09:39 #282 #1042986

>>1042541
Удалёнка есть, но её хуй найдёшь и нужно иметь нехуёвые скилы

Ответы42989

12 авг, 09:44 #283 #1042989

>>1042986
Удаленка на C/C++ как суслик

https://www.youtube.com/watch?v=ihZyUBaG_8Y

12 авг, 09:46 #284 #1042991

Cтоит ли читать C++ Core Guidelines?

Ответы43016

12 авг, 10:42 #285 #1043016

>>1042991
С учётом их скромного объёма и мелкой структурированности - стоит.

12 авг, 15:31 #286 #1043159

Ананасы, порой наблюдаю такую хуйню:
struct StructName {
/type/ operator() (/arguments/)
{
//...
return /something/
}
};
Оно бывает шаблоном и constexpr. И у меня вопрос, в чём отличие от простой функции?

Ответы4316043163

12 авг, 15:32 #287 #1043160

>>1043159
блядь, забыл про звёздочки, которые проебались

Ответы43163

10 Кб, 548x283

12 авг, 15:35 #288 #1043163

>>1043159
>>1043160
Например, вот такое вот. Почему нельзя использовать просто функцию?

Ответы43166431784318143182

12 авг, 15:39 #289 #1043166

>>1043163
>functor
Ояебу

12 авг, 15:55 #290 #1043178

>>1043163
http://en.cppreference.com/w/cpp/language/constexpr

12 авг, 16:00 #291 #1043181

>>1043163
Потому что для функций недоступна, например, частичная специализация шаблона, а для класса со статической функцией - доступна.

Ответы43183

12 авг, 16:02 #292 #1043182

>>1043163
constexpr дает подсказку компилятору, что значение выражения можно подсчитать во время компиляции. А так как у тебя тут шаблон, то:
>> A constexpr function must satisfy the following requirements:
>> ...
>> there exists at least one set of argument values such that an invocation of the function could be an evaluated subexpression of a core constant expression (for constructors, use in a constant initializer is sufficient) (since C++14). No diagnostic is required for a violation of this bullet.

То есть возможно существование значений параметров шаблона, при которых выражение бы могло быть помечено constexpr. Так так в теле метода не создается нелитеральных типов (например std::string/vector и т.д., но, к примеру std::unique_ptr - это литеральный тип) тогда, предположительно, ничего не мешает таким значениям быть.

std::less используется в качестве шаблонного параметра для std::map или std::set, к примеру, чтобы упорядочивать ключи в деревьях. Более того std::less имеет constexpr конструктор, поэтому создание экземплятора компаратора имеет нулевую сложность (фактически, он не создается, поскольку нет виртуальных методов, наследуемых классов), а вызов operator(), скорее всего, заинлайнится, потому что он представлен оберткой для другого метода.

12 авг, 16:04 #293 #1043183

>>1043181
>> Потому что для функций недоступна, например, частичная специализация шаблона, а для класса со статической функцией - доступна.
operator() не статический и статическим быть не может
функции могут быть частично специализированы, а шаблонные структуры и классы - нет

Ответы433264334243441

12 авг, 16:08 #294 #1043187

>>1036766
Как будто это сейчас представляет сколь-либо значимую проблему.

12 авг, 16:52 #295 #1043203

45 Кб, 861x800

40 Кб, 833x655

Помогите немного с классами и конструкторами, мне кажется я не понимаю чего-то совсем очевидного.

Есть член типа Bitmap. При инициализации необходимо указать его размер, который в момент инициализации становится известен не сразу.

Хотелось бы написать примерно как на первой картинке. Это немного искусственная ситуация, но суть в том, что сначала выполняется какой-то код (чтение размера из файла) и только потом становится известен размер. Но в таком случае оно выдаёт ошибку (мол нужно после двоеточия указать инициализацию как "img(char fname):bmp{size,size}{..}".
Но даже если написать так, оно упадёт с ошибкой, так как до вызова GdiplusStartup() использовать Bitmap нельзя вообще. Как и удалять его в деструкторе после вызова GdiplusShutdown(). Можно как-то явно указать в какой момент в конструкторе вызывает конструктор для bmp и то же самое для деструкторов? (если явно вызвать деструктор bmp.~Bitmap(), то ошибки компиляции нет, но деструктор суммарно вызывается два раза - второй раз автоматически)

Приходит в голову только решение с указателем со второй картинке. Но это как-то неэстетично. Мне не нужен этот указатель и его возможности. Лишняя переменная и лишний раз мучаю менеджер памяти.

12 авг, 17:50 #296 #1043234

Все поля класса, конструируются до вызова конструктора, а разрушаются после того, как выполнится деструктор может быть это не совсем верно, ананасы, поправьте, если я не прав. Ты можешь вместо инициализации по умолчанию инициализировать объект нужными тебе данными (мол нужно после двоеточия указать инициализацию как "img(char fname):bmp{size,size}{..}"
>Но даже если написать так, оно упадёт с ошибкой, так как до вызова GdiplusStartup() использовать Bitmap нельзя вообще.
Ну и? Значит надо вызвать эту функцию перед созданием объекта класса img, а функцию GdiplusShutdown() после удаления этого объекта.

>Приходит в голову только решение с указателем со второй картинке. Но это как-то неэстетично. Мне не нужен этот указатель и его возможности. Лишняя переменная и лишний раз мучаю менеджер памяти.
И в каком месте это лишняя переменная?

И вообще, твой код нихуя не правильный. Нехуй вызывать функцию для инициализации чего-либо gdi в твоём случае в конструкторе. Если ты создашь 10 объектов img, ты 10 раз инициализируешь эту библиотеку, что, как мне кажется, не есть верно. Точно также, уничтожив один объект img, ты сломаешь все остальные.
Так что убирай их нахуй из конструктора и деструктора

12 авг, 17:54 #297 #1043235

Либо это должен быть ебучий singleton, тогда это можно обыграть.

12 авг, 18:00 #298 #1043237

>Но это как-то неэстетично
Тоже мне, блядь, эстет нашёлся

12 авг, 18:43 #299 #1043256

>>1036675 (OP)
Скажите, если имеется определение глобальной функции в программе, то область памяти для нее выделяется заранее или когда происходит вызов данной функции, к примеру, из main?

Ответы4325943264

12 авг, 18:56 #300 #1043259

>>1043256
Ты лучше скажи, зачем тебе это знание.

Ответы43458

12 авг, 19:12 #301 #1043264

>>1043256
Это не лисп, это компилируемый язык, для любой функции есть:
- место хранения в образе
- место хранения в адресном пространстве программы для статических переменных
- место в стеке
Как ты мог догадаться, из всего этого что-то выделяется в начале выполнения, а что-то - в момент вызова. Догадайся.

Ответы43328

12 авг, 21:15 #302 #1043326

>>1043183
>функции могут быть частично специализированы, а шаблонные структуры и классы - нет
Просто иди на хуй.

Ответы43353

12 авг, 21:21 #303 #1043328

>>1043264
>для любой функции есть
>место в стеке
Что, для каждой функции отводится своё место в стеке?

Ответы43344

12 авг, 22:02 #304 #1043338

>Значит надо вызвать эту функцию перед созданием объекта класса img, а функцию GdiplusShutdown() после удаления этого объекта.
Эта функция инициализирует gdi+. До неё любая попытка создать Bitmap (он тоже относится к gdi+) и вообще использовать любую функцию gdi+ на сработает.

>И в каком месте это лишняя переменная?
Заместо непосредственно одного объекта Bitmap на стеке у меня один Bitmap в динамической памяти, один указатель на стеке и ещё лишняя запись про Bitmap в менеджере памяти. Не считая всего того, что порождает Bitmap внутри себя.

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

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

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

24 Кб, 680x401

12 авг, 22:06 #305 #1043342

>>1043183

12 авг, 22:07 #306 #1043344

>>1043328
Если она не заинлайнена или ещё какой понос - да, на каждый вызов требуется некоторое количество памяти. У функции нет своего места в стеке, у ВЫЗОВА функции есть своё место в стеке.

12 авг, 22:16 #307 #1043353

>>1043326
В самом деле, затупил. Спасибо, что ткнул носом.

12 авг, 23:28 #308 #1043441

>>1043183
Что такое ЧАСТИЧНАЯ специализация? Часть аргумент шаблона определена, а другая - нет?

Ответы4348243484

12 авг, 23:46 #309 #1043455

Ананасы, пришло время потрогать Qt, вопрос такой: стоит ли читать Шлее?

13 авг, 00:04 #310 #1043458

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

13 авг, 01:09 #311 #1043482

>>1043441
Да.

13 авг, 01:10 #312 #1043484

>>1043441
Или даже все не определены, но у них более специализированная форма. Например, вместо T std::vector<T>

13 авг, 01:53 #313 #1043498

>>1038736
>Ну и протокол я реализовывал по Википедии, да
@ Один долбаёб как смог объяснил на пальцах суть rfc в википедии
@ Домохозяйка из Рязани, исправляя орфографические и стилистические ошибки в статье, дополнительно извернула смысл
@ Третий долбаёб по этой статье реализует протокол

Ответы43571

13 авг, 11:03 #314 #1043571

>>1043498
@
Заработало.

13 авг, 11:29 #315 #1043580

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

Ответы435814358943602

13 авг, 11:31 #316 #1043581

>>1043580
Меня обоссут, но в винапи поиск по шаблону есть вроде как. Если не форточки - не знаю

Ответы43586

13 авг, 11:39 #317 #1043584

Я вам вкусняшек принес https://www.youtube.com/watch?v=TGWXHAPwwAU&list=PLD_I_XGUw2VO3lmSoW4glYylHPS2dAHhg

13 авг, 11:42 #318 #1043586

>>1043581
Так-то filesystem подвезли, нахуй винапи

Ответы43590

13 авг, 11:45 #319 #1043589

>>1043580
http://man7.org/linux/man-pages/man3/readdir.3.html
Для *nix ов прокатит, как в шиндус хуй знает. Вообще, можешь воспользоваться boost::filesystem

13 авг, 11:48 #320 #1043590

>>1043586
Хуй знает, в моей версии MinGW не подвезли.

Ответы4359344160

13 авг, 11:51 #321 #1043593

>>1043590
Оно уже даже в последней студии есть, люль.
Иначе тащи boost::filesystem — то же самое, в другом неймсепейсе.

Ответы4359643613

13 авг, 11:52 #322 #1043596

>>1043593
Ага. и поебись со сборкой буста, если до этого его не собирал

Ответы43603

13 авг, 12:00 #323 #1043602

>>1043580
http://pubs.opengroup.org/onlinepubs/7908799/xsh/glob.html

Ответы43613

13 авг, 12:01 #324 #1043603

>>1043596
Спермогоспода должны страдать.

Ответы43604

13 авг, 12:02 #325 #1043604

>>1043603
Ну, написать дрова на свой ноут для линукса все-таки сложнее,чем собрать буст.

Ответы43605

13 авг, 12:03 #326 #1043605

>>1043604
Покупающие ноут с ноунейм китайским хламом вместо железа должны страдать.

Ответы43606

13 авг, 12:03 #327 #1043606

>>1043605
Acer, конечно, хлам, но за те деньги ничего лучше было не взять.

Ответы43607

13 авг, 12:05 #328 #1043607

>>1043606
Небось ещё глянцевый экран, который годится разве что в качестве зеркала.

13 авг, 12:11 #329 #1043613

>>1043593
>>1043593
>>1043602
А сделать портабельно и без буста?

Ответы43614436274365144160

13 авг, 12:12 #330 #1043614

>>1043613
>портабельно
POSIX — Portable Operating System Interface

Ответы43722

13 авг, 12:33 #331 #1043627

>>1043613
Без буста и последнего стандарта — портабельно никак от слова совсем.

13 авг, 13:01 #332 #1043651

>>1043613
дзен заключается в том что "сделать портабельно" - это значит захуярить кривой порт на винду с линукса
взять тот же pidgin или qtorrent, парадоксальная ситуация: абсолютное большинство пользователей на винде, но изначально это напердолено под линукс
и так с любым так называемым "кроссплатформенным софтом"

13 авг, 13:55 #333 #1043690

Анон, такой вопрос.
Есть абстрактный класс сущности. От него наследуются другие сущности (например, предмет, какая-то область на карте, противник, сам класс игрока делаю игру и тд).
При старте читается файл карты в котором сущностей для уровня: тип, имя если есть положение на карте и тд.
Например:
type item_health
origin 32 64
Так вот, тип внутри игры представлен строкой, можно ли как-то избежать кода вида
if( str == "item_health" ) { ent = new Item(); } ??

Ответы43716

13 авг, 14:35 #334 #1043715

1. Как ответить на вопрос "что происходит в вижуал студии после нажатия F5"?
2. Что почитать о системе типов в C++?
3. Чем отличается перегруженный оператор от функции?

13 авг, 14:36 #335 #1043716

>>1043690
Ассоциативный массив.

Ответы43764

13 авг, 14:45 #336 #1043722

>>1043614
>glob.h
Заинклудил в студии и получил ошибку, потому что хедер не найден. Если это не часть библиотеки C++, нахуй надо.

Ответы44182

13 авг, 15:31 #337 #1043756

Какое определения типа в C++? Уебища в стандарте пишут, что в языке все имеет тип, но само определение типа не дают.

Ответы44160

13 авг, 15:40 #338 #1043759

Что за убого дается понятие типа в стандарте: "типы описывают объекты". А кроссовки - это когда ты бегаешь по траве, но отсюда мы никак не можем понять, что такое кроссовки.

13 авг, 15:46 #339 #1043764

>>1043716
Алсо если не читать просто стринговый тип, а юзать сущности объектов на карте, то в абстрактном классе сущности можно сделать абстрактный метод получения нового инстанса конкретной сущности, который реализуют все наследники. Тогда тоже не придется ебашиться с кучей ифов.

Ответы4376644160

13 авг, 15:49 #340 #1043766

>>1043764
>Тогда тоже не придется ебашиться с кучей ифов
Про рефакторинг и замену условий полиморфизмом слышал?

Ответы4380743871

13 авг, 16:53 #341 #1043807

>>1043766
Долбоеб, я как раз такое и расписал.

13 авг, 17:53 #342 #1043871

>>1043766
Подробнее.
Мимонуб

Ответы44160

13 авг, 18:50 #343 #1043938

Есть файлы, в которых записаны десятичные цифры, двоичные, и числа, записанные словами (например, nine). Мне нужно их отсортировать. Как написать обобщенный алгоритм, который отсортирует числа в каждом файле? Как рассматривать все эти записи? Как числа или строки?

Ответы439554396744160

13 авг, 19:12 #344 #1043955

>>1043938
>> Как рассматривать все эти записи?
>> Как числа
Очевидно же

>> Есть файлы, в которых записаны десятичные цифры, двоичные, и числа, записанные словами (например, nine).
По идее, если бинарное представления числа имеет какой-то префикс, например 0b, тогда там все очень просто: проверяешь префикс и определяешь метод для парсинга числа, заносишь число либо во временное хранилище либо, к примеру, в мульти-множество или хэш-контейнер.

Ответы43958

13 авг, 19:19 #345 #1043958

>>1043955
>По идее, если бинарное представления числа имеет какой-то префикс, например 0b
Не имеет. Три файлы содержат строки типа 0100, 432, twenty.

Ответы4396744160

13 авг, 19:28 #346 #1043967

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

sage 13 авг, 19:31 #347 #1043972

>>1037674
Пашел нахуй, макакен

13 авг, 19:32 #348 #1043973

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

13 авг, 19:33 #349 #1043974

>>1038692
Проиграл

13 авг, 21:17 #350 #1044075

>>1039982
>Какой интересный сайт, первый раз такое вижу, 10/10 идея.
У меня для тебя http://www.codeabbey.com/

14 авг, 00:03 #351 #1044160

>>1043613
Буст - это и есть портабельно. Если доступа к ФС нету в языке, ничто тру портабельное с использованием доступа к ФС написано быть не может, расслабь булки.
>>1043590
>в моей версии MinGW не подвезли.
Стандарты переключать не умеешь? Посочувствовать твоему безультернативному использованию допотопной версии GCC?
>>1043756
Все свойства объекта (реально все) определяются через его тип и размазаны по стандарту. Уёбище - это ты. Есть куча других недосказанностей в стандарте, про которые ты не спрашиваешь.
>>1043871
Лол. -> >>1043764
>>1043938
>Как написать обобщенный алгоритм, который отсортирует числа в каждом файле?
Напиши operator>> для того типа, в который это всё будет помещаться, в котором ты будешь делать выбор представления числа в зависимости от того, какие символы ты получаешь. Сортировать строки ты будешь точно так же, как и считывать в числа, так что хранить в строках нахуй не надо.
>>1043958
>Не имеет.
Что значит не имеет? Если тебе дают числа, из которых надо выбрать двоичные просто по наитию, шли таких людей нахуй.

Ответы4416444174

14 авг, 00:07 #352 #1044164

>>1044160
>так что хранить в строках нахуй не надо.
Точнее, хранить в строках нужно только для сохранения исходного написания числа.

14 авг, 00:18 #353 #1044174

>>1044160
Ну его нахуй ваше ООП, оно блять для академиков. Пойду дальше на Сишке предолиться.

14 авг, 00:28 #354 #1044176

Вопрос на мильёон инкриментов! Кто-нибудь здесь понимает кишки и детали реализации Qt5? Вопрос в том, как устроена событийная модель и модель потоков? Как QCoreApplication взаимодействует с QEventLoop? Как устроен QSignalSpy?

Проблема в том, что приходится дружить Google Tests & Mocks с Qt мордой и кое-каким промежуточным слоем. Хочется сделать малой кровью и кое0что вынести для себя.

Ответы44196

14 авг, 00:41 #355 #1044182

>>1043722
>Если это не часть библиотеки C++, нахуй надо.
Шапку читал?
> "Как мне сделать Х на чистых крестах без библиотек" идут на хуй

14 авг, 01:38 #356 #1044196

>>1044176
Посмотри исходники по диагонали, многое поймёшь.

Ответы44511

14 авг, 08:37 #357 #1044263

>>1036675 (OP)
Хачу вкотиться в кресты, есть ли учебник по типу теория - упражнение

Ответы44366

14 авг, 11:12 #358 #1044359

изучаю С++, что ещё надо изучать для тупого устройства на работу

Ответы443684439044391

14 авг, 11:24 #359 #1044366

>>1044263
c++ за 21 день. Хачу типа тебя пойдет.

Ответы44370

14 авг, 11:25 #360 #1044368

>>1044359
Изучить вакансии в твоей досягаемости и что они требуют?

Ответы44371

14 авг, 11:31 #361 #1044370

>>1044366
гляну, спс

14 авг, 11:32 #362 #1044371

>>1044368
В смысле смежные языки какие?

Ответы44410

14 авг, 12:02 #363 #1044390

>>1044359
для "тупого устройства на работу" изучать с++ крайне не рекомендуется

14 авг, 12:05 #364 #1044391

>>1044359
>изучаю С++
С++ джуны нахуй никому не нужны. Даже в НИИ батрачить за доширак только по блату возьмут.

14 авг, 12:20 #365 #1044394

Салам всем правильным. Есть локальная сеть. Как узнать мак-адрес удалённого компа в данной сети с помощью сокетов? Ну или на крайняк с помощью asio?

Ответы4441944457

14 авг, 12:55 #366 #1044410

>>1044371
в смысле есть ли вообще спрос на кресты

Ответы44427

14 авг, 13:23 #367 #1044419

>>1044394
На винде есть способ для WinSock. Можно загуглить.

Ответы44441

14 авг, 13:50 #368 #1044427

>>1044410
с каждым годом количество вакансий сокращается
те это не обвал, но систематическое уменьшение
по крайней мере в россии так
в сша если судить по форумам где русскоязычные кодеры отписываются, такая же ситуация
тут, кажется какая проблема: в крестах нету стандартизированного abi, следствием чего невозможно организовывать динамическую горячую загрузку-выгрузку классов, невозможно без геморроя пробрасывать иключения через динамически подгружаемые библиотеки, крестовые шаблоны отличаются от дженериков в ява и шарпе, но эти же дженерики также позволяют грузить-выгружать классы, как следствие всего этого на крестах не построить сложные энтерпрайз системы, которые по сути и основаны на возможности сделать программу-конструктор из плагинов
(а то что было сделано, было основано на сишном abi, поверх которого зачастую сооружались либо самописные компонентные системы, либо пользовались чем то готовым типа com или gtk, НО ведь это возврат в каменный век, тогда сразу же становится на границе динамически загружаемых модулей отказыватся от всех вкусностей крестов, и возвращатся к си, по сути)
была надежда на веб-сервисы, типа думали что будут писать относительно независимые компонены системы, которые общаются через эти самые протоколы веб-сервисов, тогда уже похуй на чем писать, и тупо думали что кресты зайдут
НО как раз именно что и похуй, и теперь и веб-сервисы тоже предпочитают реализовывать на чем-нибудь более легком, например, на каком-нибудь варианте серверного ява-скрипта, потому что оказалось что производительности достаточно, а важнее скорость запила фич и наличие обезьян готовых это кодить на рынке
крестам пиздец, это они становятся нишевым инструментом, например, неплохо заходят в игрострое, потому что позволяют сочетать нативное быстродействие с возможностями ооп (тк игры по большому счету это моделирование, а опп как раз и подходит для задач моделирования, симуляции чего-то)

Ответы444464445444596

14 авг, 13:57 #369 #1044428

Ncurses
[code lang="c++"]
initscr();
//refresh();
Wlog = newwin(LINES / 5, COLS, 4 LINES / 5, 0);
box(Wlog, 0, 0);
wrefresh(Wlog);
[/code]

Глаза протер, а так и не увидел в документации, почему без refresh() до newwin()* не отрисовываются границы. Что я делал не так?

Ответы44430

14 авг, 13:59 #370 #1044430

>>1044428
meh, разметка

14 авг, 14:25 #371 #1044441

>>1044419
>Можно загуглить
Нашёл только как свой мак-адресс узнать

14 авг, 14:35 #372 #1044446

>>1044427
Надо это в шапку закинуть, чтобы ньюфаги не бежали учить кресты.

Ответы44455

14 авг, 14:41 #373 #1044454

>>1044427
>потому что позволяют сочетать нативное быстродействие с возможностями ооп
В играх почти без ООП пишут, там сишка с чуть подсахаренная шаблонами:
https://youtu.be/rX0ItVEVjHc?t=1h23m50s

Ответы445084452244971

14 авг, 14:42 #374 #1044455

>>1044446
>чтобы ньюфаги не бежали учить кресты
Они из-за игр в основном учат. Хотят игры делать.

14 авг, 14:43 #375 #1044457

>>1044394
Можешь на указанный ip отправить сообщение и потом посмотреть arp-таблицу, чтение из некоторых файлов позволяет на никсах посмотреть ее https://codereview.stackexchange.com/questions/58097/parsing-arp-cache-in-c . В принципе, можно захватить вывод программы arp.

Ответы44463

14 авг, 15:04 #376 #1044463

>>1044457
А есть что-то похожее на winsock? Если да, кинь ссылку на MSDN.

Ответы4447744509

14 авг, 15:37 #377 #1044477

>>1044463
Тебе нужно создать UDP сокет и послать, просто послать пакет на рандомный порт узла назначения, после этого твоя таблица гарантированно будет иметь MAC адрес назначения (хотя он может уже находиться в кэше ARP'а), потому что такова суть IP, нужно сначала получить MAC и потом только отправлять пакет с указанным адресом и маком в хэдере Ethernet. Здесь тебе и понадобится винсок.
Потом делаешь что-то вроде такого:
https://stackoverflow.com/questions/14147138/capture-output-of-spawned-process-to-string
То есть вызываешь arp и перехватываешь вывод приложения, и затем уже, как тебе нравится (регекспом или посимвольным считыванием) определяешь необходимый тебе MAC для адреса.
На никсах это делается очень быстро, даже если бы мне пришлось получить вывод от ARP, но тут какой-то пиздос.
Возможно, есть какой-то системный сокет, который позволяет общаться с ядром и запросить ARP таблицу без этих изъебств, но тут я не помощник даже.

Ответы4447944480

14 авг, 15:40 #378 #1044479

>>1044477
Кстати, вот ту в пару тычком мышкой нашел https://msdn.microsoft.com/en-us/library/windows/desktop/aa366398(v=vs.85).aspx
Похоже, все делается в один вызов, так что удачи. Винсок не нужен даже.

Ответы44482

14 авг, 15:41 #379 #1044480

>>1044477
Архитектура мне ясна. Просто как запросить эту самую ARP-таблицу на винсоке?

14 авг, 15:43 #380 #1044482

>>1044479
Спасибо. Добра тебе

14 авг, 16:28 #381 #1044508

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

Ответы44522

14 авг, 16:31 #382 #1044509

>>1044463
>погугли за меня

14 авг, 16:33 #383 #1044511

>>1044196
Ну так я и начал с просмотра сорцов, но чёт не выдержал. Вот сейчас выяснил, что QEventLoop должен быть запущен в каждом потоке и процесс сигнализации в этом контексте не совсем тривиален.

Проблема в том, что не оч правильно завязывать на конкретную реализацию, как в случае файлами с суффиксом _p.h.

Сейчас не ясна другая деталь. Как вкладываются QEventLoop'ы? Как вложенный цикл сообщений понимает, что он должен обрабатывать событие, а не другой?

Ответы44535

14 авг, 17:09 #384 #1044522

>>1044508
>гораздо проще воспользоватся виртуальными функциями в крестах
Не проще и тормознее. Там почти все без ООП делают, гугли "data oriented design", и видео посмотри с Эктоном >>1044454.

Ответы44579

14 авг, 17:44 #385 #1044535

>>1044511
>int QEventLoop::exec(ProcessEventsFlags flags = AllEvents)
http://doc.qt.io/qt-5/qeventloop.html

>Как вкладываются QEventLoop'ы?
КутыВиджетс - однопоточная хуйня, пока ты сам ручками на треды не разделишь, всё происходит в одном треде. Когда ты делаешь exec() евентлупа - всё замирает, и выполняется этот эвентлуп.

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

http://doc.qt.io/qt-5/eventsandfilters.html

Такая же жопа в винапи: всё в одном треде, и пока ручками треды не сделаешь, ничто не поменяется.

Ответы44602

14 авг, 19:45 #386 #1044574

У меня есть проприетарная легаси библиотека на крестах без документации. Я начал потихоньку в ней разбираться и писать документацию.

Но чтобы отслеживать свою скорость мне нужно узнать сколько там еще говна надо разобрать.

Мне нужна программа, чтобы умела считать число C++ классов в файле, число функций в классе. Посоветуйте что-нибудь.

Ответы44580

14 авг, 20:00 #387 #1044579

>>1044522
иди нахуй, ничего я гуглить не буду
"тормознее" блядь

Ответы44683

14 авг, 20:00 #388 #1044580

>>1044574
IDA PRO

Ответы44584

1 Мб, webm, 270x360, 0:16

14 авг, 20:10 #389 #1044584

>>1044580

Ответы44591

14 авг, 20:15 #390 #1044591

>>1044584
Ну функции она посчитает, а классы никто никогда уже не узнает

Ответы44592

14 авг, 20:19 #391 #1044592

>>1044591
У меня есть исходники.

Ответы44595

14 авг, 20:21 #392 #1044595

>>1044592
Тогда считай вручную, хули как лох

14 авг, 20:21 #393 #1044596

>>1044427
Как боженька смолвил

14 авг, 21:01 #394 #1044602

>>1044535
>Такая же жопа в винапи
Писал на этом по малолетке. Вообще концепция event loop шире. Сейчас есть в любом довольно универсальном языке от петна до f#. А вот в плюсах нативного нет? Я так понимаю в новых выпусках(стандартах) появится? Корутины ведь тоже на event loop завязаны? Есть какие-нибудь фундаментальные основы, оч заебало читать маны и исходники, чтобы по крупицам собрать общую картину.

> Когда ты делаешь exec() евентлупа - всё замирает, и выполняется этот эвентлуп.
С этим ок. Есть main thread c loop'ом, который создан QCoreApplication, затем тут же я создаю новый QEventLoop. Так вот вопрос: кто будет обрабатывать мои сигналы? Тот же вопрос, но, если я соеденю слот QEventLoop::quit() с каким-нибудь сигналом?

Ответы44698

14 авг, 23:30 #395 #1044683

>>1044579
>"тормознее" блядь
Ты думаешь, что виртуальный вызов бесплатный? Что классы по 20 килобайт с нехуевой цепочкой наследований бесплатные? Что дереференс указателя ничего не стоит? За ООП приходится платить.

Ответы44740

15 авг, 00:13 #396 #1044698

>>1044602
Сорян, боюсь наврать, а погружаться в это сейчас не хочу. Попробуй книгу найти. Можешь проверить предположение: обрабатывает только те эвенты новый луп, которые заданы флагом, который я упомянул, а остальные дропаются (т.е., никогда не буду накоплены движения мышкой, например).

http://doc.qt.io/qt-5/threads-qobject.html#per-thread-event-loop - попробуй ещё это, я понял чуть больше после прочтения.

15 авг, 04:09 #397 #1044740

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

15 авг, 12:52 #398 #1044828

Ребята, неординраный вопрос имееца.
Мы знаем что си код компилится в машиный код
А можно ли машиный код скомпилить в сишный?
Есть ли приблуды для этово? Если написать что то такое то взлетит?

Ответы44830448374485144994

15 авг, 12:54 #399 #1044830

>>1044828
> си код компилится в машиный код
Нет.

Ответы44854

15 авг, 13:17 #400 #1044837

>>1044828
Конечно взлетит.

15 авг, 13:38 #401 #1044851

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

Ответы44994

15 авг, 13:45 #402 #1044854

>>1044830
Вкатываешся братан?

Ответы448654486844994

15 авг, 14:12 #403 #1044865

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

Ответы44994

15 авг, 14:15 #404 #1044868

>>1044854
Ага, 12й год уже. C компилится обычно в ассемблер, реже в roc. Если бы он компилился в машинное коды то ты бы имел необходимость на каждой машине перекомпилировать свое поделие заново.

Ответы4487544876

15 авг, 14:44 #405 #1044875

>>1044868
Разве код, написанный на языке ассемблера, не отображается в машинный код 1 к 1?

Ответы44882

15 авг, 14:45 #406 #1044876

>>1044868
>C компилится обычно в ассемблер
с каким же дном сижу на одной борде ))

Ответы44885

15 авг, 14:59 #407 #1044882

>>1044875
Нет, схуяли?

Ответы44939

15 авг, 15:05 #408 #1044885

>>1044876
Не ссы, курсу к третьему тебе и про это расскажут.

Ответы4488744906

15 авг, 15:11 #409 #1044887

>>1044885
ты, сука, дебил, правда 12 лет хуячишь кодером и с серьезным лицом тут вещаешь что си в ассемблер компилится?
да иди ты нахуй, лол

Ответы44931

15 авг, 15:53 #410 #1044906

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

Ответы44931

15 авг, 16:14 #411 #1044931

>>1044906
Ты о чем? Оптимизации на всех уровнях компиляции задействованы, что в RTL построении, что в AST.

>>1044887
Хуясе ты порвался. Ну давай, тащи свой чудо компилятор компилирующий C напрямую в объектный код. Естественно не очередной ToyMachine который тебе Марьванна задала до пятницы.

Ответы4494445014

15 авг, 16:22 #412 #1044939

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

15 авг, 16:26 #413 #1044944

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

Ответы4494544952

15 авг, 16:28 #414 #1044945

>>1044944
А ну действительно, вспомнил про препроцессор. Лексер с парсером тоже участвуют, стало быть.

15 авг, 16:38 #415 #1044952

>>1044944
RTL - это регистровый псевдоязык.

https://en.wikipedia.org/wiki/Register_transfer_language

Как он участвует в оптимизации:
https://gcc.gnu.org/onlinedocs/gccint/RTL-passes.html

15 авг, 17:13 #416 #1044971

Крестач, а есть где англоязычный форум по крестам, где разрешено было бы создавать темы не по конкретным вопросам (как на SO), а более общие, и где было бы интересно посидеть почитать что-нибудь полезное.

>>1044454
Послушал я этого Эктона и только отчасти с ним согласен. Естественно, любая программа занимается только трансформацией разного рода данных. Естественно, если мы заранее знаем, с какими типами данных нам придётся работать, и какое железо будет всё это обрабатывать, то городить лишние абстракции нет необходимости. Но штука в том, что на суперкомпьютерах, серверах, рабочих станциях, десктопах, планшетах и смартфонах РАЗНОЕ ЖЕЛЕЗО (в т. ч. внутри класса устройств), которое работает под РАЗНЫМИ ОПЕРАЦИОННЫМИ СИСТЕМАМИ, и далеко не всегда данные можно представить какой-то структурой фиксированного размера или массивом структур. Поэтому многое из того, что этот мужик там говорил про data-oriented design неприменимо даже при разработке только под какую-то одну ОС. Про кросс-платформенную разработку вообще молчу.
Какие-то дебильные куски кода там пытался разбирать с точки зрения работы с кешем. Давайте теперь все сядем и при написании любой тулзы, приложения или движка будем думать о том, что там и как работает с кешем на хуевой туче устройств.
Вообще этот Эктон какой-то балабол зашоренный - сидит со своей консолью, в которой железо годами не меняется, и ничего вокруг не видит и не хочет видеть. Ему там пара чуваков задавали хорошие вопросы:
1. Как они избегают дублирования кода (они не используют шаблоны), который должен одинаково обрабатывать разные типы данных?
Ответил, что, мол, люди изобретают вещи (подразумевая, бесполезные вещи), приводящие к дублированию кода, а потом изобретают вещи, помогающие решать проблему дублирования кода. И вообще, обработка шаблонов в C++ - это просто обработка текста посредственным текстовым обработчиком (не такой уж он и посредственный, т. к. позволяет, всё-таки, надёжно обеспечить type-safety), и что там, где разумно использовать шаблоны, лучше ГЕНЕРИТЬ КОД СПЕЦИАЛЬНОЙ ТУЛЗОЙ, которая с этим справится лучше компилятора.
Ну и кто скажет, что он не дебил после этого.
2. Есть программа, и заранее неизвестно, под каким железом и осью эта программа будет работать. Где тут место для data-oriented design?
Ответил, что предъява о том, что характеристики железа могут быть заранее неизвестны - это всё НИПРАВДА. Что всегда нужно думать о том, под какое железо ты пишешь программу, и что портабельность в общем смысле недостижима и для дураков.
3. Вот написали они движок под железо PS3, а потом бац и его надо переписывать под PS4. И, поскольку железо совершенно разное, то старый движок оказывается почти бесполезным, т. к. у ких там везде используются определённые структуры данных под железо PS3. И не показывает ли это, что весь этот data-oriented design себя не оправдывает?
Ничего конкретного не ответил. Нёс какую-то херню.

Нахер таких дебилов-болтунов, короче.

15 авг, 17:13 #416 #1044971

Крестач, а есть где англоязычный форум по крестам, где разрешено было бы создавать темы не по конкретным вопросам (как на SO), а более общие, и где было бы интересно посидеть почитать что-нибудь полезное.

>>1044454
Послушал я этого Эктона и только отчасти с ним согласен. Естественно, любая программа занимается только трансформацией разного рода данных. Естественно, если мы заранее знаем, с какими типами данных нам придётся работать, и какое железо будет всё это обрабатывать, то городить лишние абстракции нет необходимости. Но штука в том, что на суперкомпьютерах, серверах, рабочих станциях, десктопах, планшетах и смартфонах РАЗНОЕ ЖЕЛЕЗО (в т. ч. внутри класса устройств), которое работает под РАЗНЫМИ ОПЕРАЦИОННЫМИ СИСТЕМАМИ, и далеко не всегда данные можно представить какой-то структурой фиксированного размера или массивом структур. Поэтому многое из того, что этот мужик там говорил про data-oriented design неприменимо даже при разработке только под какую-то одну ОС. Про кросс-платформенную разработку вообще молчу.
Какие-то дебильные куски кода там пытался разбирать с точки зрения работы с кешем. Давайте теперь все сядем и при написании любой тулзы, приложения или движка будем думать о том, что там и как работает с кешем на хуевой туче устройств.
Вообще этот Эктон какой-то балабол зашоренный - сидит со своей консолью, в которой железо годами не меняется, и ничего вокруг не видит и не хочет видеть. Ему там пара чуваков задавали хорошие вопросы:
1. Как они избегают дублирования кода (они не используют шаблоны), который должен одинаково обрабатывать разные типы данных?
Ответил, что, мол, люди изобретают вещи (подразумевая, бесполезные вещи), приводящие к дублированию кода, а потом изобретают вещи, помогающие решать проблему дублирования кода. И вообще, обработка шаблонов в C++ - это просто обработка текста посредственным текстовым обработчиком (не такой уж он и посредственный, т. к. позволяет, всё-таки, надёжно обеспечить type-safety), и что там, где разумно использовать шаблоны, лучше ГЕНЕРИТЬ КОД СПЕЦИАЛЬНОЙ ТУЛЗОЙ, которая с этим справится лучше компилятора.
Ну и кто скажет, что он не дебил после этого.
2. Есть программа, и заранее неизвестно, под каким железом и осью эта программа будет работать. Где тут место для data-oriented design?
Ответил, что предъява о том, что характеристики железа могут быть заранее неизвестны - это всё НИПРАВДА. Что всегда нужно думать о том, под какое железо ты пишешь программу, и что портабельность в общем смысле недостижима и для дураков.
3. Вот написали они движок под железо PS3, а потом бац и его надо переписывать под PS4. И, поскольку железо совершенно разное, то старый движок оказывается почти бесполезным, т. к. у ких там везде используются определённые структуры данных под железо PS3. И не показывает ли это, что весь этот data-oriented design себя не оправдывает?
Ничего конкретного не ответил. Нёс какую-то херню.

Нахер таких дебилов-болтунов, короче.

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

15 авг, 17:17 #417 #1044974

>>1044971
>> англоязычный форум по крестам
https://translate.google.com/translate?hl=en&sl=ru&tl=en&u=https://2ch.hk/pr/res/1036675.html

Ответы45231

15 авг, 17:53 #418 #1044994

>>1044828
>А можно ли машиный код скомпилить в сишный?
Абсолютно точно можно - каждую инструкцию можно портабельно переписать на C. Вопрос лишь в одном - нахуя? Олсо - компиляция - это ещё и линковка, т.е. сборка объектных файлов в один. Зачем делать то же самое с экзешником в обратную сторону? Наверное, ты говоришь о симуляции или трансляции.
>>1044851
Не, это не то, они пытаются оптимизировать и сделать код читаемым. Просто сделать трансляцию в C - запросто.
>>1044865>>1044854
Начнём с того, что компилировать машинный код нельзя по определению компиляции, так что вопрос изначально дебильный. С другой стороны, структура процесса компиляции во время обратной трансляции не имеет вообще никакого значения.

Ответы45015

15 авг, 18:36 #419 #1045014

>>1044931
блядь, все компляторы сейчас компилят в промежуточное представление, но на выходе в исполняемом файле будет машкод под конкретную архитектуру
и, да
>12й год уже [кодинга]
>C компилится обычно в ассемблер
просто напиши сколько зарабатываешь, чтобы мне окончательно жопу разорвало
ты пишешь полную чушь, просто пиздец

Ответы4504645057

15 авг, 18:37 #420 #1045015

>>1044994
ой, все
как можно пороть хуйню с серьезным лицом? это прокатывает вообще?

Ответы45027

15 авг, 19:05 #421 #1045027

>>1045015
Такое ощущение что какой то синиор из силиконовой долины вкинул вопрос и сам же толстит на него отвечая.

15 авг, 19:53 #422 #1045046

>>1045014
Будет байтовый ассемблер. Открой экзешник в hiew и посмотри, прежде чем кукарекать.
мимо

Ответы45049

15 авг, 19:59 #423 #1045049

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

Ответы45105

123 Кб, 730x620

15 авг, 20:07 #424 #1045055

Когда уже концепты будут? Я их уже лет джвадцать жду, если не больше.

Ответы45056

15 авг, 20:07 #425 #1045056

>>1045055
Чё это такое, расскажи вкратце

Ответы45060

15 авг, 20:09 #426 #1045057

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

Ответы45064

15 авг, 20:13 #427 #1045060

>>1045056
Если просто - позволяет ограничивать параметры темплейтов без хаков вида enable_if и SFINAE.

https://stackoverflow.com/questions/15669592/what-are-the-differences-between-concepts-and-template-constraints

15 авг, 20:19 #428 #1045064

>>1045057
и gcc и майкрософтофский компилер тоже используют промежуточное представление
да все используют
фишка llvm была же не в том что они первые сделали это, а в том что предоставили легкодоступное программное api на доступ к ir (intermediate representation)
и наверное мне здесь стоит прекращать просветительские посты, тк судя по постам, сегодня дурной контингент в этом треде
один только специалист с 12ти летним стажем упорно доказывающий что сишка компилится в ассемблер чего стоит
> Если бы он компилился в машинное коды то ты бы имел необходимость на каждой машине перекомпилировать свое поделие заново.
а вот от этого вообще на смех пробивает

Ответы45072

15 авг, 20:31 #429 #1045072

>>1045064
Долго еще будешь продолжать троллинг тупостью?
Вот тебе линк для альтернативно одаренных:
http://cs-fundamentals.com/c-programming/how-to-compile-c-program-using-gcc.php

Где ты здесь видишь свое промежуточное представление?

Ответы45082

15 авг, 20:54 #430 #1045082

>>1045072
нет, блядь, это ты необразованное уебище
в gcc целое семейство промежуточных представлений, с той же ссаной википедии
the historical Register Transfer Language (RTL)
the tree language GENERIC
the SSA-based GIMPLE.
Standard Portable Intermediate Representation SPIR/SPIR-V
LLVM Intermediate Representation
HSA Intermediate Layer
другое дело что к ним нет общедоступных программных апи, как у шланга поверх llvm

Ответы45084

15 авг, 21:01 #431 #1045084

>>1045082
> с той же ссаной википедии
Попробуй почитать что-то сложнее, базарю, заходит. Возможно даже начнешь трансформацию во что-то разумное.

>the historical Register Transfer Language (RTL)
>the tree language GENERIC
>the SSA-based GIMPLE.
Вот эти три хуевины нужны для преобразования препроцессированного кода в ассемблер.

>Standard Portable Intermediate Representation SPIR/SPIR-V
Это низкоуровневое представление для трансляции в GPU/CPU команды которое использует OpenCL/Vulkan и другие подобные стандарты.

>LLVM Intermediate Representation
Ну, я думаю даже такая тупая макака как ты слышала что это.

>HSA
Надстройка над ассемблером для серверных GPU.

Как все это тобою высранное относится к компиляции си, лол? Ты всегда когда обсираешься начинаешь кидать все до чего дотянешься из википедии?

Ответы4508545094

15 авг, 21:07 #432 #1045085

>>1045084
>Ну, я думаю даже такая тупая макака как ты слышала что это.
То есть LLVM не относится к компиляции Си? То есть это не промежуточное представление? Или что вы хотели этим сказать?

Ответы45087

15 авг, 21:08 #433 #1045087

>>1045085
У LLVM в процессе компиляции есть еще один дополнительный шаг, которого нет у других компиляторов, если на пальцах.

Ответы45096

15 авг, 21:36 #434 #1045094

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

Ответы45099

15 авг, 21:37 #435 #1045096

>>1045087
КАКОГО ТАМ "ШАГА" НЕТ?
llvm, блядь, это ir с публичным программным api, что и отличает его от предшественников

Ответы45098

15 авг, 21:42 #436 #1045098

>>1045096
Нет, его отличает от предшественников четкое деление на бекенд и фронтенд. Посередине есть маняпредставления для перебрасывания кода между языками, но это отдельный разговор. Входы и выходы у всех компиляторов примерно одинаковые.

15 авг, 21:43 #437 #1045099

>>1045094
Давай, еще раз запусти шутейку со своим "промежуточным" представлением. Чую к следующему треду ты и виртуальную си-машину родишь со своим форком джаваскрипта.

Ответы4510245103

15 авг, 22:00 #438 #1045102

>>1045099
>Не знать элементарных вещей
Скажи, ты только вкатываешься?

15 авг, 22:05 #439 #1045103

>>1045099
>си компилируется в ассемблер
>12 кодинга
иди нахуй

15 авг, 22:09 #440 #1045104

Что если запилить прогу которая компилит с++ код в асемблер? и наоборот асм в с++? Думаете взлетит?

15 авг, 22:11 #441 #1045105

>>1045049
Маша, иди читай про опкоды ассемблера и не позорься.

Ответы45106

15 авг, 22:20 #442 #1045106

>>1045105
>си компилируется в ассемблер

Ответы45112

15 авг, 22:25 #443 #1045109

Этот тред достиг какого-то нового уровня. Я ваще не понимаю, что происходит.

Ответы45113

15 авг, 22:27 #444 #1045110

Расскажите ньюфагу, как компилируется си?

15 авг, 22:31 #445 #1045112

>>1045106
Ничего кроме ассемблера твоя кора дуба не может исполнить напрямую.

Ответы4511445115

15 авг, 22:32 #446 #1045113

>>1045109
Подтягиваемся к стандарту самих плюсов

15 авг, 22:33 #447 #1045114

>>1045112
Си->cisc ассемблер->risc ассемблер, который выполняется напрямую

Ответы4511945130

15 авг, 22:34 #448 #1045115

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

Ответы45116

15 авг, 22:36 #449 #1045116

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

Ответы45118

15 авг, 22:36 #450 #1045117

на проце исполняется бинарный машинный код, никакого ассемблера там нет

15 авг, 22:36 #451 #1045118

>>1045116
в машкод
уебище

Ответы4512145122

15 авг, 22:37 #452 #1045119

>>1045114
Какой ещё риск на x86? Выполняется ровно то что тебе конпилятор высрет.

Ответы45124

15 авг, 22:38 #453 #1045121

>>1045118
Манюша, я тебе ещё раз повторяю, открой любой бинарник в дизассемблере и прекрати обсирать портки.

Ответы4512345159

15 авг, 22:39 #454 #1045122

>>1045118
машкод и есть асм, ебать ты тупой
каждая асм мнемоническая инструкция равносильна одной машинной команде

Ответы45236

15 авг, 22:41 #455 #1045123

>>1045121
Асссемблер это мнемоническая запись машкода, если забыть про макросы.

Ответы45150

15 авг, 22:42 #456 #1045124

>>1045119
Читай, быдло
https://stackoverflow.com/questions/5806589/why-does-intel-hide-internal-risc-core-in-their-processors

Ответы45125

15 авг, 22:45 #457 #1045125

>>1045124
Каким боком внутренние костыли штеуда к софтверной части?

Ответы45127

15 авг, 22:47 #458 #1045127

>>1045125
Компилятор высирает cisc код, который все равно еще транслируется в risc код.

Ответы45128

15 авг, 22:49 #459 #1045128

>>1045127
Но это уже в железе и зависит от процессора. Принимает он именно классический 86 бинарник.

15 авг, 22:54 #460 #1045130

>>1045114
cisc ассемблер->risc ассемблер
Я бы не сказал, что микрокод это risc ассемблер.

15 авг, 23:40 #461 #1045147

Что именно происходит во второй строке и как объяснить оказавшееся в p значение?

char array = "1111";
int p = (int*)array;

Ответы4514945151

15 авг, 23:43 #462 #1045149

>>1045147
Мама, чому я дебил.
[code lang=c++]
char array = "1111";
int p = (int*)array;
[/code]

15 авг, 23:45 #463 #1045150

>>1045123
Позволь чуть добавить: это мнемоническая запись обернутая в метаданные, но так оно и есть.

15 авг, 23:48 #464 #1045151

>>1045147
В инт запихивается ( а точнее пишется ворнинг/еррор) значение указателя (адрес).

Ответы45157

16 авг, 00:17 #465 #1045157

>>1045151
А значение по этому адресу - 825307441. Почему?

Ответы45237

16 авг, 00:31 #466 #1045159

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

Ответы4516545182

16 авг, 00:52 #467 #1045165

>>1045159
И чем же по твоему являются машинные коды? Или ты у нас убежденный фортранщик?

Ответы452394530245303

16 авг, 02:44 #468 #1045182

>>1045159
>с той или иной степенью успешности
Для x86 степень успешности составляет 100% ибо у инструкций ассемблера и опкодов имеется соответствие 1 к 1.
мимоаллигатор

Ответы4524145245

16 авг, 02:57 #469 #1045184

>>1036758
Просто не нужно выучивать язык до корки. Зачем знать о специфических вещах, которые используют разве что всякие MPL программеры. С++ крут своей моделью памяти, а не сахарком.

Ответы45186

16 авг, 02:59 #470 #1045186

>>1045184
>MPL программеры
Кто?

Ответы45215

16 авг, 07:51 #471 #1045215

>>1045186
meta

16 авг, 09:27 #472 #1045231

>>1044974
А ты хорош

16 авг, 09:53 #473 #1045236

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

16 авг, 09:55 #474 #1045237

>>1045157
>Почему?
Потому что это адресс, по которому лежит твоя строка (или половина байтов адреса, если компилируешь под х64).

16 авг, 09:57 #475 #1045239

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

Ответы45298

16 авг, 10:09 #476 #1045241

>>1045182
>100% ибо у инструкций ассемблера и опкодов имеется соответствие 1 к 1
Ну и какому опкоду соответствует строчка jmp pizdatvoeymamki? Какому из этих девяти http://x86.renejeschke.de/html/file_module_x86_id_147.html, например?

16 авг, 10:20 #477 #1045245

>>1045182
>ибо у инструкций ассемблера и опкодов имеется соответствие 1 к 1.
Про псевдоинструкции слышал? В х86 тоже есть.

16 авг, 12:24 #478 #1045298

>>1045239
Т.е. байтовый ассемблер (с метаданными на регистры) - это уже не ассемблер, это МАГИЯ

Ответы45319

16 авг, 12:35 #479 #1045302

>>1045165
инструкция ассемблера это строка
например
>mov eax ebx
ее машинный код, это всего два байта
>0x66 0xA1

Ответы4530745309

16 авг, 12:38 #480 #1045303

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

Ответы45309

16 авг, 12:45 #481 #1045307

>>1045302
>>0x66 0xA1
три байта
0x66 0x89 0xD8
fixed

16 авг, 12:48 #482 #1045309

>>1045302
Т.е. от смены представления меняется семантика языка. Понятно. Очень оригинально.

>>1045303
Ага и микрокод инженеры пишут руками, как диды завещали. Походу ты просто немножко устарел, лет так на 30.

16 авг, 13:15 #483 #1045319

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

Ответы45328

16 авг, 13:24 #484 #1045328

>>1045319
Это здорово что у тебя есть половина понимая работы ассемблера. Ну да не суть, оригинальный вопрос был - во что компилируется си, если я правильно понимаю. Вот он как раз компилируется в то, что ты называешь текстовым ассемблером, а затем в зависимости от бекенда или насмом или гасом ассемблируется в "бинарные волшебные строки".

Ответы45331

16 авг, 13:32 #485 #1045331

>>1045328
>Вот он как раз компилируется в то, что ты называешь текстовым ассемблером
Правильный ответ - си компилируется в объектные файлы. Никаких текстовых ассемблеров и бинарных строк.

Ответы45332

16 авг, 13:34 #486 #1045332

>>1045331
Компилятор си использует для этого сторонний ассемблер. Был DragonEgg который пытался собирать сразу бинарники из сей минуя rtl и ассемблер, но получалась хуита. Иди читай документацию, если не веришь тому что тебе говорят.

Ответы45335

16 авг, 13:38 #487 #1045335

>>1045332
>Компилятор си использует для этого сторонний ассемблер
Да какая разница что он использует, и какое у него промежуточное представление? Компилятор принимает на вход текстовый файл и выдает объектный. Результат работы компилятора си - объектный файл. Си компилируется в объектные файлы. Точка.

Ответы4533645342

16 авг, 13:39 #488 #1045336

>>1045335
Буду теперь на собеседованиях это спрашивать, чтобы дебилы сразу отсекались.

Ответы45340

16 авг, 13:44 #489 #1045340

>>1045336
Мамка набирает конкурентов на борщи?

16 авг, 13:45 #490 #1045342

>>1045335
>Си компилируется в объектные файлы.
Ага, джаваскрипт тоже компилируется в исполняемые файлы, ну браузер же он исполняемый.

Dmitry 16 авг, 13:49 #491 #1045343

Вас не смущает что в c++ никогда небыло и не будет
- Стабильного ABI
- Нормального синтаксиса
- Нормальной производительности
- Нормальной масштабируемости
- Нормальных тимлидов
- Нормальных компиляторов

Ответы4534545346454844587245969

16 авг, 13:49 #492 #1045345

>>1045343
А зачем все это?

Ответы45348

16 авг, 13:49 #493 #1045346

>>1045343
Нет.

Dmitry 16 авг, 13:51 #494 #1045348

>>1045345
Чтобы не стать умственным инвалидом на дно-должности мидла а то и джуна.
Чтобы не быть ограниченым одним языком и нихуя не уметь.

Ответы4535345356

16 авг, 13:55 #495 #1045350

Посоны, подскажите прием, как реализовать грамотное закрытие программы, в случае ошибки.
Есть несколько подсистем, которые держат какие-то ресурсы, и освобождают их при вызове деструкторов. Обычно при удачном завершении main().
Но где-нибудь в другом месте может случится ошибка, после которой желательно все бросить, и заняться освобождением ресурсов.

Ответы45369

16 авг, 13:57 #496 #1045353

>>1045348
Как вот это все
>- Стабильного ABI
>- Нормального синтаксиса
>- Нормальной производительности
>- Нормальной масштабируемости
>- Нормальных тимлидов
>- Нормальных компиляторов

Связано с вот этим вот:
>Чтобы не стать умственным инвалидом на дно-должности мидла а то и джуна.
>Чтобы не быть ограниченым одним языком и нихуя не уметь.

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

16 авг, 14:01 #497 #1045356

>>1045348
Ну хорошо, мысль твоя ясна, кто твоя мать тоже. Что сам предлагаешь? На чем нативные аппликухи писать?

Ответы45368

16 авг, 14:22 #498 #1045368

>>1045356
go для сервисов и нетворкинга.
C для системщины, игр, графики.

Ответы4537145372

16 авг, 14:23 #499 #1045369

>>1045350
exit(ERROR_CODE)

Ответы45378

16 авг, 14:23 #500 #1045371

>>1045368
>go
Мде, насчет мамаши я явно не ошибся.

16 авг, 14:26 #501 #1045372

>>1045368
>C для системщины
Итак.

>игр, графики
Было, не взлетело.

>go для сервисов и нетворкинга
go не может ни в первое ни во второе. Даже его создатели скоро его дропнут, новые проекты все на питоне (который он должен был убить, лол)

Ответы45373

16 авг, 14:34 #502 #1045373

>>1045372
Маняоправдания.

Ответы45380

16 авг, 14:43 #503 #1045378

>>1045369
На stack overfow говорят что это хреновый подход.

16 авг, 14:45 #504 #1045380

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

16 авг, 16:02 #505 #1045408

https://github.com/cplusplus/draft/blob/master/papers/n4688.md
Читанул я на досуге, значит, что там принимают... Сетевая библиотека, рейнджи, концепты, параллелизм, и еще какое-то говно, которое возможно добавится в список ебанутых вопросов на собеседованиях. Среди этого всего самое полезное это концепты, а остальное лишь библотэки, которые к тому же УЖЕ ЕСТЬ. Так вот нахуя пихать то, что есть, и никому нахуй не упрется, разве что каким-то хипстерам, которые "STL - One Love". Где моя сериализация, суки?! СТАТИЧЕСКАЯ ебать вас в рот, никто не просит динамическую сериализацию, блять, предложения давно висят, сука, а они только BYTE ORDER высрали!!!!1!111
Вилли, убирай добрый кнут, доставай жестокий кнут!

Ответы4541345870

16 авг, 16:06 #506 #1045412

ПЕРЕКОТ https://2ch.hk/pr/res/1045411.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1045411.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1045411.html (М)
ПЕРЕКОТ https://2ch.hk/pr/res/1045411.html (М)

16 авг, 16:06 #507 #1045413

>>1045408
Главное рефлекшон завезут. Ну и модули неплохо бы.

Ответы45430

16 авг, 16:30 #508 #1045430

>>1045413
не увидел там рефлексию, или все же есть

16 авг, 18:30 #509 #1045484

>>1045343
>- Нормальных тимлидов
А я кто тогда?

17 авг, 14:51 #510 #1045870

>>1045408
Найс порвался.

17 авг, 14:51 #511 #1045872

>>1045343
>Вас не смущает
Нет.

17 авг, 20:33 #512 #1045969

>>1045343
Дык, все кроме аби есть.

Тред утонул или удален.
Это копия, сохраненная 8 сентября 2017 года.

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

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

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion