Это копия, сохраненная 17 июля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый >>1006097 (OP)
Теги: плюсы, cpp
Плюсы или джаву выбрать?
Драйвера не пишут на крестах.
Вот таких плесневелых главное не слушай, >>1016816 , си с классами у него, охуеть вообще, на улице перестройка и играет ласковый май. Ныряй сразу в кресты, причем именно в 11, пока забей на более ранние и более поздние.
Нахуя если это взаимозаменяемые языки разошедшиеся по синтаксису лет как десять?
class BS {
char buffer[65536];
static BS getRandom() {
BS bs;
//fill buffer with random data
return bs;
}
}
По указателю передавай (через std::unique_ptr, например или просто указатель (не забудь выделить память). А вообще в таких случаях, как правило, компилятор применит RVO (Return Value Optimization) и будет писать твой BS в стековом фрейме одного из предыдущих вызовов. Так что можешь не запариваться.
Ну а для больших объектов придумана куча.
else :false
if Billy=лох else 0 :approveded
...............
range(i=0, k=2, x=b)
b:onload
Write:"Billy fuccking veryfecalishhiet"
Print ("Billy fuccking veryfecalishhiet")
end.
Что-то на французском. Не пойму ничего...
НЕТ ТЫ, МАМ СКАЖИ ЕМУ
>Сначала вкатиться в Си, а потом в кресты, или наоборот?
Нахрен вы задаёте вопросы, на которые уже отвечали столько раз, что решили вынести в faq?
https://isocpp.org/wiki/faq/how-to-learn-cpp#learning-c-not-a-prereq
>>1016787
>Это шизик из старых тредов бомбит, что картинку поменяли.
Если бы ты не был полным дебилом, то понял бы, что я:
1. Бомблю не из-за картинки, в первую очередь.
2. Вообще не бомблю, в нулевую очередь.
Кстати, к шизофрении я не особо склонен.
>>1016832
>хочу драйверы для микроволновок писать
Их на Java пишут. Если ты почитаешь историю этого языка, то узнаешь, что его изначально создавали для микроконтроллеров бытовой техники.
>Как суметь прочитать огромное количество страниц (1000) и при этом не сойти с ума?
Большинство читало больше и не сошло. Всё зависит от того, за какое время и каких страниц.
Стэнли Липпман, Жози Лажойе и Барбара МуЯзык программирования C++
Но думаю сначала прочитать прату по с++, а затем вернуться к этой книге.
Как? Один я такой слабоумный, что
> Просто я за весь месяц прочитал всего лишь чуть более ста страниц.
Нет, я и до этого пытался читать книги по C#, джаве, питону, но все читалось как-то очень медленно.
Может ты hanjubasom балуешься?
Парнишка один при мне стоял у подъездной двери и вспоминал в какой квартире он живет.
Когда я родился родители не пили и не курили.
Насчет беременности мать сказала, что все было нормально. Хотя в глубоком детстве меня иногда водили на энцефалограммы и к невропатологу, не знаю зачем.
>>1017000
Ничем не балуюсь.
Бло, братан я даже хз тогда. Если ты не совсем нуб, то книги должны легко идти. Простое быстро пролистывай, сложное разберай. Если совсем не варит котелок, оставь закладку и потом вернись перечитать.
2 месяца 100 страниц читать это даже хз как назвать.
Может у тебя мотивации нет?
обычную закладку в книгу, не ту что подумал тц майор
Только не RVO, а NRVO (Named Return Value Optimization)
В том то и дело, что упражнения даются очень легко и быстро, но текст читаю очень медленно.
Почему нужно использовать переменную цикла как ссылку, для изменения символа в std::string? Это связано с тем, что строки в глубине свой души остаются const char*? И как нам помогает при этом ссылка? Почему нельзя использовать обычную переменную?
>Как суметь прочитать огромное количество страниц (1000) и при этом не сойти с ума?
Лучше их читать после практики. Тогда сразу будешь понимать, что тебе нужно, а что - нет. Мне вообще гугла, Мейерса и гнутых STL-исходников хватило в свое время, чтобы вкатиться (не с нуля, конечно). Я писал для обучения маленькую либу с контейнерами: вектор, дек, хэш-тэйбл, интрузив лист. На практике сразу ясно становится, что зачем нужно и как применяется. А просто книгу ботать - бесполезно, мне кажется. Ничего не отложится.
>Почему нельзя использовать обычную переменную?
Потому что обычная переменная после изменения ничего со строкой не сделает, а ссылка изменит символ в строке, на который ссылается.
>обычная переменная после изменения ничего со строкой не сделает, а ссылка изменит символ в строке, на который ссылается
Я и хочу узнать, почему так происходит.
Я понимаю, что независимая, но зачем ссылка? Ссылка - это ведь другое имя переменной?
Ну так а в чем тогда разница использования: изменять ссылку, т.е изменять переменную, либо сразу изменять переменную без ссылки?
>чем интрузив контейнер от нон интрузив отличается?
Обычный контейнер управляет объектами, которые в него добавляют, интрузив - объекты сами являются хранилищем контейнера.
List<T> - обычный лист, который менеджит память, управляет добавлением, удалением элементов.
Интузив: struct MyListElem : IntrusiveListElement<MyListElem> (или композицией вместо наследования), где struct IntrusiveListElement { T* next }; Причем эти элементы могут лежать в каком-то другом контейнере, но при этом быть частью списка.
Ну так а почему бы сразу не изменить переменную? Зачем изменять ее через ссылку? Почему так придумано?
>>1017197
В остальных тредах не знают, что такое ссылка и гонят меня сюда.
Потому что обычная переменная в теле цикла получает копию символа. Все изменения будут действовать только в пределах тела цикла. А ссылка - это по сути синтаксический сахар над указателем. А он указывает на символ в изначальной строке.
С указателями-то разобрался?
> ссылка - синтаксический сахар над указателем
Так вроде же указатель - это объект, а ссылка нет, это всего лишь другое название переменной
>Так вроде же указатель - это объект, а ссылка нет, это всего лишь другое название переменной
Правильно мыслишь. Всяких питухов, которые мешают в кучу определения стандарта и детали реализации и потом принимают второе за первое не слушай.
>синтаксический сахар над указателем
Дебилушко, синтаксическим сахаром называются конструкции языка, которые в принципе можно выразить через другие.
Всех свойств ссылок ты через указатели не реализуешь, так что не пизди насчёт синтаксического сахара.
Нет.
Это именно что удобная конструкция.
Чтобы лишний раз клаву не топтать.
https://pastebin.com/qS0q35dc
Ну хуй знает, вроде в книге написано обратное
И вообще, встречал мнение по формату кода. То, что всякие структуры лучше в функции передавать по указателю или ссылке, ты, надеюсь, в курсе. Так вот, некоторые советуют входные параметры (типа структур) передавать по ссылке, а выходные - по указателю, чтобы сразу по виду сигнатуры было понятно, что к чему.
Переменная же не может обладать чужой памятью, она уникальна в данный момент времени. Достаточно знать этого факта, чтобы понять, почему при изменении переменной кроме неё ничего не меняется.
Ты же когда в сортир идёшь, у твоего соседа по дому днище в кровати не срывает. Вы - два независимых объекта/куска памяти со своими состояниями/значениями в памяти.
Ты часом не из Java-мира к нам пришёл?
>Ты часом не из Java-мира к нам пришёл?
После джавы все понятнее должно быть - там все ссылки кроме примитивов.
Скорее наоборот, он под переменной понимает что-то вроде ссылки или указателя. Ведь это всё, что он видел.
у лиммана есть вводная книжка по крестам
она охуенная
читай ее, делай там упражнения
а потом уже сразу начинай что-нибудь практическое кодить
а потом уже что непонятно, у страуструпа кусками дочитаешь
если бы у меня была машина времени, то себе молодому я дал бы такой совет
Есть специальная книга по указателям, но там про чистый Си.
Richard M. Reese "Understanding and Using C Pointers. Core Techniques for Memory Management"
А вообще лучше прочти это:
Стэнли Липпман, Жози Лажойе и Барбара МуЯзык программирования C++
Чтоо использовать для создания пула потоков? Как с этим работать?
Я может неправильно понял. Подумал, что ему нужен готовый пул.
С вкатывания в кутю.
закончил тебе защеку
Книжечки в шапочке. Там всё есть.
>поясните за обработку исключений
В 90% случаев ничего явно обрабатывать не надо, в отличие от обработки возвращаемых значений.
>поясните за обработку исключений\ошибок
Поясняю
> где целесообразна
Там где есть исключения/ошибки.
>приходится ли пользоваться возможностями библиотеки си
Приходится
>хотелось бы выбрать основной инструмент
Выбирай printf
system() !
>поясните за обработку исключений\ошибок на плюсах
try-throw-catch
>где целесообразна
Там, где ты не уверен в коде. В частности, если в работу программы вмешиваются внешние по отношению к программе факторы, такие, как исчерпывание памяти, зависимость кода от работы других программ.
>приходится ли пользоваться возможностями библиотеки си.
Можно, но не обязательно. Например, можно использовать С-схему распределения памяти для перегрузки оператора new или [], однако сам по себе С++ предоставляет достаточно мощные средства.
>основной инструмент
try-throw-catch. exit(), abort(). Вообще говоря, С++ предлагает тебе самостоятельно описать обработчики ошибок, и ни в чём тебя не ограничивает.
#include <iostream>
int main()
{
const std::vector<int> f(2);
const std::vector<int>::const_iterator cit = f.begin();
std::cout << sizeof(cit) << std::endl;
}
Я всё ещё не вижу выигрыша. Или он начинает проявляться только с использованием динамического распознования типов?
>ты проиграл.
...битву но не войну. Вот в твоей практике подобное поведение указателей приносило пользу?
Мне так удобнее.
>>1018286
>Им так было нужно.
Ну а почему разработчикам clang и gcc нужно было 8, а не 12?
>Ну а почему разработчикам clang и gcc нужно было 8, а не 12?
Чтобы копировать итератор было дешевле.
>почему MSVC выдает 12
http://rextester.com/l/cpp_online_compiler_visual тут выдал 8. Там 64-битный компилятор.
Чтобы их вызывать, очевидно же.
>>1018293
>>1018291
Провел эксперименты, результаты пикрил.
Почему так происходит? В чем разница между Release и Debug?
>В чем разница между Release и Debug?
В размере итератора, озоза
Видимо, добавляют инфу для рантайм-проверки выхода за границы итератора и может ещё для чего-нибудь вроде сравнения итератора не с тем end.
Посмотри определение в заголовочном файле.
Проводил эксперименты.
Просто const_iterator - это константный итератор, или итератор на константу?
А если const const_iterator - это константный константный итератор или константный итератор на константу?
Так же, как с соответствующими указателями.
Будет ли auto в данном коде работать как var? Функция вызываемая мной возвращает NTSTATUS, по идее я хочу чтоб _status после вызова стал типом NTSTATUS и мне не пришлось обьявлять для этого дополнительную переменную.
Вот код :
https://pastebin.com/vEqu6beF
Как уже сказали, смысл в этом только один: позаёбывать препода, так как с первого раза всё это заходит трудно. У нас в инсте вообще сначала с машины Тьюринга начинали.
Если ты сомневаешься в том, что тебе надо платить эти 20к, то лучше здесь анона найди, будешь платить за прогресс и удовлетворение.
>>1016295
Ебу дал? Если тебе так сильно нужна производительность - отключи эксепшены в компиляторе (будут быстрее функции вызываться, азаза). Лучшие умы планеты делают всё для того, чтобы уничтожать стопу на С++ было так же эффективно, как на С.
>>1016769
Спроси это в отдельном треде, а не в треде плюсов. Раз ты спрашиваешь в треде плюсов: выбрать плюсы, так как джава дно.
>>1016931
Возвращай ссылку, но только ты можешь себе в ногу выстрелить, если класс сдохнет. CopyOnWrite в плюсах запрещён.
>>1016946
Сколько ещё раз ты этот кал будешь постить?
>>1016964
Конспектируй, блядь, будь мужиком.
>>1016990
Ты не слабоумный, просто плюсы - сложный язык, особенно - для начинающих. Потом быстрее пойдёт, если будешь упражняться.
И вообще программирование - это сплошное легаси, которое разгребать ещё десятилетиями будут. Коспектируй!
>>1016938
Если у него класс временный - тогда да, но тогда его стопа мертва ещё до рождения. Если у него класс обычный - никакого RVO быть не может.
Хотел нас потраллить?
>>1017204
Что ты пишешь, блядь? Всё, что ты можешь найти в языуе без подключения хеадеров - это интегральные типы (поправьте меня, если неправ), какие ещё объекты? Ссылка и указатель - один хуй, только одно надо разыменовать и можно переуказывать на другую переменную, а другое - не надо, и пересослать нельзя.
(про конст не говорим)
>>1017211
Важные отличия есть, но на суть не влияют.
>>1017388
void - это char , который можно приводить ко всему без предупреждений о типизации. char - это тип ячейки памяти, может быть больше 8 бит, и вовсе не "буква".
>>1017665
OpenMP нагугли, почти во всех современных компиляторах поддерживается.
>>1017773
С изучения примеров из дистрибутива Qt и тщательного чтения справки в Qt Creator.
>>1017767
Ты можешь писать на C++ без использования массивов на стеке и вообще почти всего из С. Но так никто не делает, поэтому читать чужой код будет трудно. Твой основной инструмент - документация, блядь - cppreference и стандарт.
>>1018287
В алтависту! Быстро, решительно!
>>1018292
Алтавистуй C++ ABI и про еблю с либами и extern "C".
>>1018309
- итератор (указатель) на константу
- неизменяемый итератор на константу (но на возможность арифметических операций с ним не влияет)
>>1018546
Да, всё будет. auto именно это и означает - вывод типа из инициализатора (должен быть вместе с объявлением).
Как уже сказали, смысл в этом только один: позаёбывать препода, так как с первого раза всё это заходит трудно. У нас в инсте вообще сначала с машины Тьюринга начинали.
Если ты сомневаешься в том, что тебе надо платить эти 20к, то лучше здесь анона найди, будешь платить за прогресс и удовлетворение.
>>1016295
Ебу дал? Если тебе так сильно нужна производительность - отключи эксепшены в компиляторе (будут быстрее функции вызываться, азаза). Лучшие умы планеты делают всё для того, чтобы уничтожать стопу на С++ было так же эффективно, как на С.
>>1016769
Спроси это в отдельном треде, а не в треде плюсов. Раз ты спрашиваешь в треде плюсов: выбрать плюсы, так как джава дно.
>>1016931
Возвращай ссылку, но только ты можешь себе в ногу выстрелить, если класс сдохнет. CopyOnWrite в плюсах запрещён.
>>1016946
Сколько ещё раз ты этот кал будешь постить?
>>1016964
Конспектируй, блядь, будь мужиком.
>>1016990
Ты не слабоумный, просто плюсы - сложный язык, особенно - для начинающих. Потом быстрее пойдёт, если будешь упражняться.
И вообще программирование - это сплошное легаси, которое разгребать ещё десятилетиями будут. Коспектируй!
>>1016938
Если у него класс временный - тогда да, но тогда его стопа мертва ещё до рождения. Если у него класс обычный - никакого RVO быть не может.
Хотел нас потраллить?
>>1017204
Что ты пишешь, блядь? Всё, что ты можешь найти в языуе без подключения хеадеров - это интегральные типы (поправьте меня, если неправ), какие ещё объекты? Ссылка и указатель - один хуй, только одно надо разыменовать и можно переуказывать на другую переменную, а другое - не надо, и пересослать нельзя.
(про конст не говорим)
>>1017211
Важные отличия есть, но на суть не влияют.
>>1017388
void - это char , который можно приводить ко всему без предупреждений о типизации. char - это тип ячейки памяти, может быть больше 8 бит, и вовсе не "буква".
>>1017665
OpenMP нагугли, почти во всех современных компиляторах поддерживается.
>>1017773
С изучения примеров из дистрибутива Qt и тщательного чтения справки в Qt Creator.
>>1017767
Ты можешь писать на C++ без использования массивов на стеке и вообще почти всего из С. Но так никто не делает, поэтому читать чужой код будет трудно. Твой основной инструмент - документация, блядь - cppreference и стандарт.
>>1018287
В алтависту! Быстро, решительно!
>>1018292
Алтавистуй C++ ABI и про еблю с либами и extern "C".
>>1018309
- итератор (указатель) на константу
- неизменяемый итератор на константу (но на возможность арифметических операций с ним не влияет)
>>1018546
Да, всё будет. auto именно это и означает - вывод типа из инициализатора (должен быть вместе с объявлением).
>Возвращай ссылку, но только ты можешь себе в ногу выстрелить, если класс сдохнет. CopyOnWrite в плюсах запрещён.
http://ideone.com/Ib0VPy
>Если у него класс временный - тогда да, но тогда его стопа мертва ещё до рождения. Если у него класс обычный - никакого RVO быть не может.
>Хотел нас потраллить?
http://ideone.com/cgfaTq
Возвращать референс на локальный объект -- это undefined behavior, т.к. локальный объект, лежащий на стеке, после выхода из функции потенциально будет уничтожен.
Может свалю потом за бугор и где то смогу стать крестомакакой? я хз. Очень хочется кресты, прям сильнее пиздятинки хочетсо!
Если писать самому, то можно писать без легаси-говна. Если в чужом коде рыться, то лучше не надо. Да ты и без легаси стопу изуродуешь, пока не привыкнешь.
Хочу писать для себя на C++ 11/выше с использованием всех красивых фичей которые упрощают жизнь. Без легаси говна.
Хочу вкатиться в гейдев пока что для себя пошаманить с OpenGL/Direct3D. + я тупой в математике и собираюсь немного подтянуть знания, парралельно с гейдевом было бы прекрасно.
Ебучая РАБота только мешает со временем. Придется зубрить теорию и практиковаться по выходным. Ну может еще после РАБоты покодить, но у меня не часто силы остаются даже для того чтоб писать на C#/C свои проекты.
Вообще особого смысла нет, C# вполне себе альтернатива крестам, области применения с учетом CX пересекаются под виндой чуть более чем полностью. А так тут где-то по соседству есть тема с конфой для вкатывающихся в разные языки с circle jerking'ом и прочими ништяками.
Я чего-то не понимаю или те, кто писал std::complex - ебаны? Зачем писать геттер и сеттер, если можно просто сделать поля, как у std::pair? Нахуя всё усложнять?
Хотели сделать однородным использование complex, наверное. Абс, например, может быть только методом.
Там нет сеттера - когда ты хочешь присвоить новое значение, ты пишешь
complex huy;
huy={1,2}; //initializer_list
или
huy={huy.real(),2};
>Абс, например, может быть только методом.
Ну это естественно, если он не хранится, а считается.
Сеттер есть, можно написать:
huy.real(228);
А, теперь вижу. Но ты на мелочи жалуешься. Попробуй лучше функцию, которая работает на трёх значениях аргумента: >>1005226 .
Да, но:
1) Это стандартная библиотека, там каждая мелочь должна быть продумана.
2) Так надо же специально всё усложнить, помимо того же поля написать четыре бесполезные функции.
3) Мне интересно, может в этом глубочайший смысл какой-то, я-то хуй простой и не понимаю чего-то, что умные дядьки придумали.
>Если тебе так сильно нужна производительность - отключи эксепшены в компиляторе
В правильном исполнении эксепшены не добавляют никакого оверхеда в нормальный control flow. Т.е. являются с этой точки зрения zero cost. Non-zero cost начинается только если эксепшен бросают.
> Что ты пишешь, блядь? Всё, что ты можешь найти в языуе без подключения хеадеров - это интегральные типы (поправьте меня, если неправ), какие ещё объекты?
Что ты пишешь, блядь?
Сразу заметно не открывавшего стандарт ни разу. Поди посмотри определение объекта в C++. К слову, в стандарте C тоже употребляют это слово — объект. И определяют оба стандарта этот термин одинаково. Так что он всё написал корректно.
> Ссылка и указатель - один хуй
Нет.
> Важные отличия есть, но на суть не влияют.
> суть
Гуманитарием несёт за версту.
Ссылки — не синтаксический сахар, т.к., как я уже писал, выразить все свойства ссылок через указатели невозможно.
> void - это char , который можно приводить ко всему без предупреждений о типизации
Нет, нельзя. Это другие указатели можно неявно приводить к указателям на char или void, но не наоборот.
> char - это тип ячейки памяти, может быть больше 8 бит, и вовсе не "буква".
Это верно, массив из char и unsigned char использую для определения что такое "представление объекта в памяти", но всё-таки одно из главных назначений char — хранить символ из базового набора символов (что это такое — тоже определено стандартом).
> Твой основной инструмент - документация, блядь - cppreference и стандарт.
Не очень похоже, что ты это применяешь к себе.
>В правильном исполнении эксепшены не добавляют никакого оверхеда в нормальный control flow. Т.е. являются с этой точки зрения zero cost. Non-zero cost начинается только если эксепшен бросают.
Не все так умеют. Некоторые до сих пор в MSVS компилят, а там легаси на легаси.
>Поди посмотри определение объекта в C++.
В следующий раз полезу - гляну. Спасибо.
>Не очень похоже, что ты это применяешь к себе.
Если ты не хочешь, чтобы я что-то писал, то пиши раньше меня, делов-то. Что я применяю к себе - лучше известно мне, чем тебе. Знать все особенности языка до грамматических правил и уметь писать на нём, умело пользуясь документацией в моменты сомнений - разные вещи.
Мир и любовь к твоему очагу.
В требованиях к вакансии указано:
)работа с сетью(http)
)знание unix систем на уровне пользователя
На линуксе сижу года полтора, но никаких знаний особо не имею.
Что можно почитать по этим двум пунктам? Чего от меня ждут?
>Компилятор говно
Ну так я и спрашивал про компилятор.
Что конкретно в нем говно?
>>1019108
> SJLJ-эксепшены (инбифо кланг)
Почему это плохо?
В Visual Studio 2017 уже есть експериментальная возможность использования модулей.
Жаль, что у шланга и гцц нет ни нормальных ide, ни нормальных портов на винду.
Шланг на винде есть, да и MinGW от Стефана Т. Лававея норм. Другое дело да, что IDE кроме студии нет вообще, кроме красноглазой параши и джетбрейнсового дерьма.
>Шланг на винде есть
А у него есть собственная стандартная библиотека, как у gcc и msvc? Насколько я знаю, приходится использовать его вместе с gcc, а я этого делать не хочу.
Притом его не поддерживает даже говно от джетбрейнсов. Если бы поддерживало, и у него была своя стандартная библиотека, то радостно бы перекатился.
>>1019216
>MinGW от Стефана Т. Лававея
Можно поподробнее?
в исходники компилятора студии залезть?
Ты таблетки принял?
>>1019224
https://nuwen.net/mingw.html
>залезть в исходники и подкрутить их на свой вкус?
>имплаинг, что в этом треде кто-то может прочитать и подправить исходники компилятора
>в исходники компилятора студии залезть?
Ну а почему бы нет?
Я думаю, каждый программист должен обладать навыками реверс-инжниринга.
Дружок, исходники компилятора не этого я сам смотрел и разбирался в них. Если ты даже на такое не способен, то может тебе лучше заняться чем то другим?
Я крестами уже 5 лет деньги зарабатываю, а ты мне чем-то другим заняться предлагаешь? How about no?
Шланг завезли в студию. Сам не пробовал.
>>1019216
Qt Creator потихоньку избавляется от багов.
>>1019263
Скинь сурсы от MSVC в личку, я покопаюсь.
Как сделать его компиляться в vs под виндовс?
>Qt Creator потихоньку избавляется от багов.
Да, только он требует тот же самый msvc или mingw
Cmake
Нахуя компилятору своя иде, поехавший?>>1019220
Исходники чего? Закрытой студии?
>>1019385
В вс затрахаешься с разными версиями компилятора и кривыми xml-проектами. Лучше наверни на систему mingw со стандартными тузами вроде make и баша и cmake . && make
>>1019241
Что за поехавшие в треде? Уебок стих не дал написать и перекотил — набежали шизофреники, это кара божья, не иначе.
>Нахуя компилятору своя иде, поехавший?
Я имел в виду поддержку компилятора.
Тот же gcc поддерживает много ide, а по факту все они - говно, кроме clion
>Что за поехавшие в треде? Уебок стих не дал написать и перекотил — набежали шизофреники, это кара божья, не иначе.
Как ты будешь восстанавливать исходники, если их кто-то проебал, а бинарник проебать не смогли?
Будешь с нуля писать?
Тут-то и пригодятся навыки реверсинга, тупой овощ.
Не, животное, когда ты занимаешься программированием, а не ежедневной деградацией в отладчике и дрочевом на свои кряки которые ты крякаешь и потолок твоего погромминга настрочить кейген на 2/3 состоящий из выдранного куска асма — есть плюс минус понимание как все работает и легче просто написать с нуля.
>>1019431
Сука ну ни траль так толста плез я щас вытику от тваиго жыра
MinGW w64 - вполне норамальный порт ГЦЦ на винду, если он используется в коммерческом продукте и через него компилится куча софта, включая Сигвин. То, что Креатору не принципиален компилятор - это плюс, а не минус. В редистрибьютабле МНИГВ ГЦЦ есть, тебя это волнует?
>>1019424
>Нахуя компилятору своя иде, поехавший
ДЛЯ СБОРКИ ПРОЕКТОР БЕЗ МЕЙКФАЙЛОВ, например.
>>1019431
Говно вообще или для тебя? Твои потребности меня не интересуют.
Я имею в виду, есть ли проекты, требующие навыков написания кода на обоих этих языках. И насколько это экзотика?
>ДЛЯ СБОРКИ ПРОЕКТОР БЕЗ МЕЙКФАЙЛОВ, например.
И много ты таких IDE знаешь, поехавший?
>>1019485
Экзотика уровня фейсбука, не парься и пиши на пхп.
нет. Учи лучше Go или Яву
>>1019460
Ну давайте, расскажите мне, какой хороший codeblocks или dev-c++. Можете еще сказать про CodeLite, там даже поддержка clang есть.
Ах да, inb4 используй (DWORD)GetModuleHandleA(NULL) - нет, мне нужно именно вручную находить image_base, не спрашивайте почему.
Тащемта у меня почему то вываливается аналогично но даже с VirtualAlloc.
Я не ебу хули оно хочет
https://pastebin.com/A18M3LAy
Блять, я наебал, VirtualProtect, не Alloc
Вываливается, потому что ты даешь доступ не на все страницы памяти. Там просто пока до 0x5a4d дойдет дело, ты через кучу страниц пройдёшь. Но я не хочу в цикле постоянно VirtualProtect дважды вызывать для каждой итерации.
Меня вот интересует, что за хуйня - на ассемблерных вставках работает, а на крестах - не
>И много ты таких IDE знаешь, поехавший?
Почти каждая из тех, которые я пробовал: у Креатора, у МСВС, у Коделите - у всех свои проекты, и мейкфайлов ты не касаешься. Иди на хуй.
>>1019500
Ты первый тут про Коделите пёрднул.
>Почти каждая из тех, которые я пробовал: у Креатора, у МСВС, у Коделите - у всех свои проекты, и мейкфайлов ты не касаешься. Иди на хуй.
Какой же ты тупорылый.
При чём здесь компиляторы вообще? Иди таблеток выпей.
>При чём здесь компиляторы вообще?
Ты чо несешь, дебич?
Он тебе про IDE говорит, а ты ему про компиляторы.
>А что плохого в MSVC?
В 32-битном ABI при входе/выходе из функции постоянно требуется выполнять код, относящийся к поддержке исключений. Т.е. даже если исключений не бросалось, их поддержка вносит постоянный оверхед.
В 64-битном ABI, похоже, они стали zero cost. (Или просто оптимизатор поработал)
>>1019108
>SJLJ-эксепшены
Там не SJLJ, но тоже не zero cost.
>>1019179
>Оптимизирует хуево
2017-й уже не так хуёво. Но вообще да, у его оптимизатора есть некоторый потолок, связанный с тем, что компилятор ничего не знает о strict aliasing.
>>1019179
>не умеет в С++17
Как я демонстрировал в прошлом треде, не умеет даже в C++98.
>>1019216
>IDE кроме студии нет вообще
Фанатик незаметен.
В Cmake можешь указать любую залупу, а если что не работает то найти в интернете модуль для этого.
С mingw-w64 работает и сам креатор без всего (юзает мейкфайлы), и qbs, и cmake, и ещё что-то.
Напоминаю сверхразуму, что "Программы и операционные системы обсуждаются в /s/".
>Связанные с софтом вопросы обсуждаются в /s/. Исключение - IDE и прочие инструменты программирования, которые можно обсудить в тредах соответствующих языков.
А не петух ли ты часом?
Все нормальные поняли, о чём идёт речь - о том, что в разы упрощает использование компилятора. Зачем нужны IDE - ты, видимо, знаешь. У тебя претензии к выражению "IDE у компилятора"? Не ебёт: учись понимать ошибки собеседника по контексту ( если это вообще ошибка).
поймали хеллоуворлдщика
Вернее, кроме инструкций RISC ядра ничего не нужно.
http://ideone.com/e.js/gx9C7k
Всем похуй что ты писал. Самое важное - это КАК ты пройдешь собеседование. Собеседований обычно 2 типа, это либо ты решаешь всякие говнозадачки, как в Яндексе -> иди дрочи leetcode.com и читай Кормена про алгоритмы
Либо это просто тебя будут спрашивать всякие уебанские вопросы ЧЕМ СТРУКТУРА ОТЛИЧАЕТСЯ ОТ КЛАССА или там ЧЕМ РЕФЕРЕНС ОТЛИЧАЕТСЯ ОТ УКАЗАТЕЛЯ.
Я собесил много джунов, обычно если ты прочитал хотя-бы майерса пару книжек - этого уже за глаза для найма.
Самое время выучить CSS HTML JS, питон ты знаешь, поэтому вкатывайся в джангу.
А глупые вопросы про с++ не задавай больше
https://stackoverflow.com/questions/71416/forward-declaring-an-enum-in-c
Забавно, я не знал, что так можно.
только проблема в том, что у меня тип то темплейтный и когда определяю контекст то у меня используется еще не определенный тип.
Прочитал про переменные, указатели, ссылки, векторы и строки.
Напиши компилятор для своего языка.
глупые вопросы потому что они про с++ или потому что я плохо сформулировал? по питону, не совсем уж хочется в веб, язык конечно замечательный, но душа лежит к байтоебству/формоебству(ну если надо я душу перепрошью) просто хотел узнать как обстоят дела в с++
попробуй написать сортировочки постепенно усложняя код темплейтами итераторами, фичами 17го стандарта потом берись за веб-сервер
>глупые вопросы потому что они про с++ или потому что я плохо сформулировал?
Потому что спрашиваешь о вакансиях на с++
>хотел узнать как обстоят дела в с++
Плохо. Много легаси проектов с С++ 98, работы мало, в основном придется поддерживать древнее говно мамонта, которое сначала писали на чистом си, потом внезапно продолжили писать на си с классами, потом с шаблонами, исключениями, и.т.д
Когда я собесился на джуна несколько раз - меня мучали именно вопросами по крестам. Когда я перестал быть джуном - меня мучали уже задачками. На прошлой неделе в яндекс на крестодебила собесился - дали задачку, в которой крестов вообще не было, на чистом си писал
Про итераторы читал, про темплейты еще нет.
Я толком ничего не знаю, даже до 200 страницы липпмана еще не дошел.
а если у меня есть интернатура luxoft в городе и я могу туда вполне податься, а там около embedded(разработка какого-то софта для автомобилей) стоит и на это положить? жаль конечно что много "говна мамонта" среди вакансий
Ложить никогда не стоит, дума, в люксофт все стоит попытаться податься.
Она там только в доказательствах всяких, это тебе все равно не надо.
ну написать не большая проблема, только вот как и какого качества
Можно юзнуть какую-нибудь либу для работы с http и тогда задачей станет нажать на вики по либе или ручками работать с запросами(что я сам делал)
ну а так если действительно хочется развить знание программирования в довольно большом объемее то это твой чойс(рекомендую std::regex и boost::asio там есть все что тебе понадобится для не самого сложного https сервера)
тогда читай дальше, итераторы без темплейтов странно использовать, хотя действительный опыт работы с темплейтами даст только разработка иерархии типов для какой-нибудь игры или хеширование строк в компалтайме
за одно прочитай beej guide network programming(или как-то так) пойми как писать все на си и посмотри на boost как сделано там
>итераторы без темплейтов странно использовать
Ну в векторах, строках и массивах они же используются, хотя в массивах это просто указатели.
я конечно точно не скажу но вроде в gnu stl в array vector stack string итераторы и есть указатели
я про то что магию типов c++ необходимо понять как можно раньше
итераторы были призваны обобщать алгоритмы и все stlевские алгоритмы темплейты
Да никак. op::type - это поле инстанциированного тимплейта. От того, что он есть во всех инстансах и одинаковый, лучше не становится. Можно было бы написать специализацию, но её можно писать только после объявления основного тимплейта.
>>1019922
Как ты собрался изучать алгоритмы без математики? Пузырёк там псевдокодом, какая математика?
>>1019925
В интернатуре тебя шлюхой не сделают и паспорт не отберут. Попробуешь - расскажешь.
>>1019942
>векторах, строках и массивах
Тимплейт, нетимплейт, тимплейт. Вопросы есть?
>>1019949
В сишных массивах нету итераторов, сишные массивы - это кусок памяти без методов.
>он есть во всех инстансах и одинаковый
Я, конечно, полагаю, что ты просто не совсем точно сказал то, что хотел, но всё-таки поправлю.
enum, определённый в разных инстансах темплейта — это разные enum-ы. Даже если они определены полностью одинаково.
меня сейчас не пускают(cv уже слал), сказали приходи на 4-ом курсе (сейчас 2-ой)
>это кусок памяти без методов
Этож какие симантически отличные от указателя методы есть у итераторов?
Она тебе не поможет, иди дрочи leetcode.com и будет все путем
>Даже если они определены полностью одинаково.
Вообще я странно написал,про разные enum-ы, определённые полностью одинаково.
Раз они в разных инстансах — то они уже определены по-разному.
О, кстати, новая идея: "статические" члены, которые можно юзать через идентификатор тимплейта без аргументов. %ололол%%
>>1019997
Семантически. Итератор - это итератор. Указатель - это указатель. Когда говорят "итератор", имеют ввиду не вообще любую вещь, которую пяткой через ухо можно использовать, как итератор. .end() у массива есть, кстати? И не надо мне говорить про array+sizeof(array)
Извини, но понятие итератора определили без тебя.
$24.2.1
1. Iterators are a generalization of pointers that allow a C++ program to work with different data structures
(containers) in a uniform manner.
2.Since iterators are an abstraction of pointers, their semantics is a generalization of most of the semantics
of pointers in C++. This ensures that every function template that takes iterators works as well with
regular pointers.
Речь была даже не о том, что такое итераторы (нет, это не один лишь указатель), а о том, что в сишных массивах их нет. Указатель - не итератор. У тебя в процитированном написано:
>in a uniform manner
А теперь взгляни на то, как ты получаешь .end() в сишном массиве:
>array+sizeof(array)/sizeof(ASTERISK array)
Итератор - это концепт, спорить не о чем. Учить меня тому, что я знаю много лет, не надо.
>как итератор. .end() у массива есть, кстати? И не надо мне говорить про array+sizeof(array)
std::begin() и std::end()
Если не надо, то зачем ты смешиваешь в одну кучу массивы и указатели (до которых массивы деградируют)?
>Указатель - не итератор
Указатель, согласно стандарту, как раз таки итератор.
>Iterators are a generalization of pointers that allow a C++ program to work with different data structures(containers) in a uniform manner.
Кхм. На русский это переводится так: Итераторы это обобщение указателей, позволяющее программам на C++ работать с разными структурами данных ( контейнерами ) в обобщенной манере.
>Указатель, согласно стандарту, как раз таки итератор.
Такие утверждения требуют уточнений.
>>1020314
>Кхм. На русский это переводится так: Итераторы это обобщение указателей, позволяющее программам на C++ работать с разными структурами данных ( контейнерами ) в обобщенной манере.
А, вот и уточнение.
Написано "итераторы это обобщение указателей" и ты отсюда сделал вывод, что "указатели это [обобщение] итераторы[ов]"? Кхм. Мда.
Можно сказать, например, что указатели это итераторы в том смысле, что для них задана частичная специализация std::iterator_traits. Тут никаких вопросов.
Насчёт "симантической" разницы. Это всё зависит от того, насколько вольно трактовать "симантику". Всё-таки при применении оператора * к итератору (если он определён как класс, а не просто алиас типа указателя) вызывается метод, а при применении к функции — built-in оператор. "симантически" это разные вещи.
Это типа кресты нахуй не нужны.
А липпман/прата?
>Такие утверждения требуют уточнений.
А я сам уже глянул в стандарт. Указатель таки итератор.
Ок, буду знать.
Ясен пень, само по себе "итераторы - обощение указателей" не означает то, что указатель - итератор. Но раз написан список требований и указатель удовлтеворяет их - ок, ладно, таки итератор.
Собираюсь использовать Clion + mingw-w64 на винде, какие подводные?
Clion крайне убог как IDE (сколько еще лет memory view будут прикручивать и по памяти переполняться на проекте на 1000 файлов?), порт gdb крайне убог сам по себе (нет нормально работающих view'ов, нормально не работает ретроспектива). Других подводных нет. Они все надводные.
А какую IDE тогда использовать?
Eclipse CDT? Qt Creator? Visual Studio с MSVC, который не полностью поддерживает даже C++98?
Ну а что делать с плохой поддержкой стандартов?
Я еще на Си в основном пишу, мне С99 и С11 хотелось бы увидеть.
Судя по тому, что ты вообще об этом спрашиваешь - ты сраный ученик подмастерья джуна на пол ставки за борщ. Исходя из этого - перестать забивать голову левой информацией. C99 поддерживается 15й студией, C11 нормально не поддерживается никем (если не считать еблю с флагами под gcc) кроме clang.
C99 поддерживается студией на уровне совместимости с С++, не больше.
>не считать еблю с флагами под gcc
Не понимаю, о какой ебле ты говоришь, но он в gcc нормально поддерживается.
https://gcc.gnu.org/wiki/C11Status
>Visual Studio с MSVC, который не полностью поддерживает даже C++98?
Если тебе так важна корректная работа two phase lookup-а в шаблонах, то там, насколько я знаю, есть Clang with Microsoft CodeGen. Т.е. фронтенд от Clang, бекенд от CL.
Сам никогда не пробовал.
https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html
Выбирай любую комбинацию gnu11/stdc11 которую тебе cmake/configure высрет и ебись, чего как маленький то?
Особенно доставляют вариации -fpermitted-flt-eval-methods, с багами вроде этого:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69462
или
https://stackoverflow.com/questions/28851350/same-flt-eval-method-different-results-in-gcc-clang
Макроопределение забыли, бывает.
>https://stackoverflow.com/questions/28851350/same-flt-eval-method-different-results-in-gcc-clang
Почему там вообще r1 может быть не равен 1? У 1.0 и 10.0 одинаковая мантисса, а по алгоритму IEEE там сначала получается мантисса=1, а потом уже режется точность из-за нормализации:
http://www.rfwireless-world.com/Tutorials/floating-point-tutorial.html
Это уж в кланге баг тогда.
Что нужно прочитать и выучить, чтобы стать С++ джуном?
Из чтения стандарта не понял, как слово inline решает проблему многократного определения. Объясните, почему добавление inline устраняет такие ошибки.
Посоны, а был ли когда-то вообще профит от изучения C++?
L/R value - это, судя по всему, Левые/Правые значения, то есть те, что стоят слева или справа от знака присваивания, например.
lvalue1 = rvalue1
У них есть свои особенности, но я не шарю.
Прозреваю, что будет объектный файл на хеадер. Стандарт не читал, заскринь выдержки.
При чем здесь стандарты? Писать код удобно. Не нравится компилятор? Используй внешний, благо теперь можно делать проекты cmake Это конечно своя головная боль, но другого я не знаю
Зарплата
struct Rate
{
int count;
string str;
};
Если во время её инициализации присвоить в str какую-то строку, то выделится память и произойдет копирование?
Если да, то как этого избежать? (если делаю str ссылкой, то ломается последующая сортиковка) если нет, то это ведь и будет предельно быстро?
Изначально строки берутся из словаря, который гарантированно будет жив.
Затем вектор из этих структур сортируется так:
auto sortLambda = [](const Rate & a, const Rate & b) -> bool
{
if (a.count != b.count)
return a.count > b.count;
return a.str < b.str;
};
for (auto it = rates.begin(); it != rates.end(); ++it)
sorted.push_back(Rate{ it->second, it->first });
sort(sorted.begin(), sorted.end(), sortLambda);
Отнюдь. На крестах дохуя всего пишется, геймдев это меньшая часть.
Я пишу софт для сетевого оборудования охуительно быстрого. Ядро на С, обвязка на крестах
Функция с модификатором inline может быть многократна объявлена. При компиляции будет взято первое попавшееся определение.
Ты ебанешься писать огромный проект на чистом си, линуксопердолики не в счет, у них время бесплатное.
Сначала вкатиться в си, а потом в кресты, или наоборот?
>Функция с модификатором inline может быть многократна объявлена
С чем это связано и как обосновано? Или это "а пусть будет так"?
Что ты в ЦПП-треде забыл, болезный?
>>1021360
Зависит от того, какого типа p. Если оператор взятия адреса переопределён, то может возвращать хоть конскую залупу.
>>1021372
Если decltype от адреса возвращает int по той причине, которую ты назвал, то компилятор не может предупредить об использовании числа вместо адреса в компайл-тайме.
Net.
из 80х капчуешь?
Т.е. uint32_t s = 24; a << s; — как бы вы s назвали?
Они уже оптимизированы, т.к оптимизацию проводит компилятор за тебя.
оставил бы константой, или назвал чем-то, что отображает от куда ты взял значение сдвига.
https://pastebin.com/7fUgNzSd
(сюда не влезло, а жаль, лол хотя судя по
main.cc:29:10: note: (skipping 1015 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
самое интересное не влезло, кек).
>>1021396
Дык у меня из-за этого-то и творческий кризис, ибо я хз чем назвать, я его не откуда и не беру — это просто изначальное значение, от которого отравляется по 8 и из 4/2 знаковой строки составляется её хекс код.
>значение, от которого отравляется по 8 и из 4/2 знаковой строки составляется её хекс код.
Блин, нихуя не понял.
gcc -Os
>Из чтения стандарта не понял, как слово inline решает проблему многократного определения. Объясните, почему добавление inline устраняет такие ошибки.
Потому что стандарт явно разрешил таким определениям нарушать one ODR rule.
>>1021370
>С чем это связано и как обосновано?
А подумать?
>L/R value - это, судя по всему, Левые/Правые значения
Самый прикол в том, что r/lvalue относится не к значениям, а к выражениям.
есть средства для этого, в том числе и на шланге, само собой
другое дело что не оч популярны, видимо потому что ньюфаги и так в этом не шарят, а монстрам уже не надо, они и так понимают
та же история, что и с препроцессором в си - во всех компиляторах существует опция позволяющая посмотреть процессированный код (с развернутыми макросами), но люди даже с 10тью годами опыта этим не пользовались..
shift_amount
shift_amount
>А подумать?
Потому что функция определяется встраиваемой и может подставляться целиком по месту вызова? Но ведь это только рекомендация компилятору.
Тоже вкачусь с вопросом. Как назвать параметр типа шаблона, который может быть целым числом (для подсказки полюзывателям шаблона)?
Если функция встраивается в место вызова, то от неё никаких самостоятельных определений не остаётся.
Темплейты функций пишутся в хедерах и их инстанциирование потенциально приводит к определению функций во многих единицах трансляции. Чтобы не нарушать этим one ODR rule, инстанциированные функции неявно являются inline.
То же распространяется на методы классов, определённые внутри определения класса. Они попадают во все единицы трансляции, подключающие хедер с их определением и поэтому неявно являются inline.
intNumber
Так, падажжи, то есть, если у меня будут статичные мемберы заинлайнены, они будут в нескольких экземплярах?
Связано с 50-летними технологиями компиляции и сборки программ. При компиляции кода с обычными функциями компилятору не нужен код самих функций - он просто проставляет ссылки и идет дальше. Тоесть при компиляции каждой отдельной единицы трансляции в ней может не содержаться кода некоторых функций - главное чтобы были их декларации (для статического контроля типов). Потом с заменой ссылок на реальные адреса функций (и поиском этих функций) ебется уже линкер. Но при компиляции кода с инлайн функциями компилятору нужен код этих функций потому что этот код напрямую вставляется вместо вызовов функций. Тоесть при компиляции каждой отдельной единицы трансляции нужен код всех инлайн функций которые используются в этой единице. В случае функций которые должны использоваться только в одной единице трансляции проблем нет - код функции помещается в .срр файл и все. Но если ты хочешь использовать инлайн функцию в нескольких единицах трансляции единственный нормальный способ - поместить эту функцию в хедер. Но тут получается проблема что компилятор создаст кучу одинаковых функций (для кадой единицы трансляции в которую включен хедер с инлайн функцией). В случае обычных функций это запрещено. Ну и какбы нет особого смысла код обычных функций помещать в хедер - множественная компиляций одной и тойже функции только замедлит процесс. А для инлайн функций - помещение в хедер это единственный нормальный вариант использовать одну и туже функцию в нескольких единицах трансляции, поэтому он и разрешен. Все возможные отхуяченые по шею ноги - на совести программиста.
А, я lvalue имел ввиду. Типа как вообще может выражение слева от присвоения быть (a+b=c)? разве что если там указатель вычисляется
>>1021611
Хотя даже ссылка не обязательна. Главное, чтобы оператор= был определён.
Для std::string a, b, с,
a+b=c
вполне скомпилируется.
> я lvalue имел ввиду. Типа как вообще может выражение слева от присвоения быть
А, ты думаешь, rvalue или lvalue определяется тем, с какой стороны от = стоит выражение? Это не так.
>(a+b=c)? разве что если там указатель вычисляется
Если a это указатель, а b это целое число (или наоборот), то a+b=c ты написать не сможешь, разве что *(a+b)=c
Ты еще больше бреда от вкатывальщиков читай.
Ну, отчасти это так, потому что именованный rvalue ведет себя как lvalue. Более правильно было бы сказать - rvalue это неименованная величина получаемая из результата выражения или статик каста.
Плюсоны, может напишем свою ось?
Студия действительно говно, я там только цветовую тему спиздил.
Qt как IDE шикрен, из библиотек там только интерфейс писать удобно. Ну и разный функционал там впечатляет, но как ядро тугой.
К слову, зачем c++ и джава ребята используют отладчик? Гораздо проще использовать дебагстринги, логирование или те же месседжбоксы.
Это ж ебанутся можно подрубать дебагер на мультипочное приложение с 20+ классами. Тем более 90% его функционала нет смысла использовать для дебага высокоуровневых приложений.
Ну, теоретически это возможно в vc если ты не используешь /Ze ( https://msdn.microsoft.com/en-us/library/0k0w269d.aspx ). Но не надо этого делать. Это нарушает концепцию unique_ptr.
Вот есть std::tr1::regex
https://msdn.microsoft.com/en-us/library/mt771538.aspx
У его функций есть по несколько версий. Например вот пара regex_search:
bool regex_search(const Elem ptr, match_results<const Elem, Alloc>& match, const basic_regex<Elem, RXtraits, Alloc2>& re, match_flag_type flags = match_default);
bool regex_search(const Elem* ptr, const basic_regex<Elem, RXtraits, Alloc2>& re, match_flag_type flags = match_default);
В норме, версия функции выбирается в зависимости от используемых параметров и без танцев, что и показано в MSDN примерах там же, например
std::cout << "search(f, l, \"abc\") == " << std::boolalpha << regex_search(first, last, mr, rx) << std::endl;
std::cout << "search(\"a\", \"abc\") == " << std::boolalpha << regex_search("a", rx) << std::endl;
Тогда почему же у меня, в VS 2017 работает только версия с двумя параметрами, пикрилейтед? Как запустить и другие версии? Я хочу вернуть совпадение.
std::tr1::regex_match(strStd, pattern, res); - не работает
std::tr1::regex_match(strStd, pattern); - работает
Всё, сорри, проебался в глаза.
Не по теме проблемы: не используй tr1, 2007 не вернешь. Используй просто std::regex_match.
Так сейчас и сделаю.
>К слову, зачем c++ и джава ребята используют отладчик?
Чтобы смотреть память, когда прога упала.
Или еще есть шанс вкатиться в десктоп разработку?
нахуй вы регулярки на крестах пользуйте?
зачастую можно sprintf обойтись или его аналогами
ну или пишется state machine, способов как ее делать штук пять можно набрать
просто учитесь их писать и все
В си кроме кодогенерации без стороннего говна (кек) за спартанство платят перформансом и низким потреблением памяти, в говне тебе не платят ничем, кроме того что этому говну даже человека с синдромом обучить можно.
Он стал тырпрайзным. Ну, еще игры остались и всякие мессенджеры + тулы. Но в % тулами пользуется малое число юзеров. Хотя на икру с ферарями хватает.
Да всё в веб-технологии перекатывается, даже ебаные десктопные приложения. Тот же православный, казалось бы, Qt — и тот активно развивает свой QML ака недоумию-жс-для-разметки-и-просто-жс-для-логики.
>хочешь сделать хуяк-хуяк
>предлагают привязывать ногу к стулу sprintf — чтобы отстреливать удобнее было
>потом говорят писать стейк-машины на каждый хуяк-хуяк который делаешь просто потому что автобус из буханки
/0
Ну вот тебе эрэфсишная регулярка для почтовых адресов. http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
Можешь примерно так на глаз конечный автомат накидать?
Вот поэтому перл и сдох, лол. Для почтовых адресов фсм вышла бы куда короче — что ещё может быть нужно, кроме как разделить адрес на до и после @ и попутно проверить все ли там аски символы?
если чо другой анон
Вообще имплементации RFC822/RFC5322/5321 проприоритарные как правило и для иллюстрации я их притащить не мог, ту что притащил - на порядок короче виденного на практике.
>Для почтовых адресов фсм вышла бы куда короче
Ну давай начнем с name@"supercorp@fuckers".com
>нахуй вы регулярки на крестах пользуйте?
Ну а как еще мне просто достать из строки подстроку соответствующую шаблону?
Если есть решени проще чем
std::string inputStr;
std::match_results<std::string::const_iterator> result;
std::regex regexp("([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,4})");
std::regex_search(inputStr, result, regexp);
То я буду рад его увидеть.
Они будут более наглядны и лаконичны для решения задачи поиска даты в строке? Покажи пример, пожалуйста.
Сам факт того, что ты сделал регулярку, подразумевает бессмысленность построения тут конечного автомата.
Может тот анон просто сказал тебе что-то вроде "git gud" или просто выебнулся, но по строкам там точно меньше не выйдет.
Тот анон - ебанувшийся байтоеб периодически посещающий этот тред. Не обращай внимания.
Слишком толсто.
>Ну, отчасти это так, потому что именованный rvalue ведет себя как lvalue.
Про что несёт? rvalue или lvalue это свойство [под]выражения, что такое "именованный rvalue"?
> Более правильно было бы сказать - rvalue это неименованная величина получаемая из результата выражения или статик каста.
Более правильно было бы привести ссылку и/или цитату на стандарт или cppreference.
>Если в push_back передавать объект с unique_ptr, поинтер нормально скопируется, или без std::move никак?
А самому проверить?
>К слову, зачем c++ и джава ребята используют отладчик?
Разбирать, как сторонний код работает.
А ловить утечки или там data race в дебаггере и правда ненужно.
>Про что несет?
>rvalue это свойство
Как-то даже грустно стало. А ведь когда 11 стандарт вводили об этом знал каждый. Похоже я слишком старый, скоро будут уже 2000++ года рождения закатываться. Стандарт, раздел 5, Expressions:
[ Note: An expression is an xvalue if it is:
(7.1) — the result of calling a function, whether implicitly or explicitly, whose return type is an rvalue reference
to object type,
(7.2) — a cast to an rvalue reference to object type,
(7.3) — a class member access expression designating a non-static data member of non-reference type in which
the object expression is an xvalue, or
(7.4) — a .* pointer-to-member expression in which the first operand is an xvalue and the second operand is
a pointer to data member.
In general, the effect of this rule is that named rvalue references are treated as lvalues and unnamed rvalue
references to objects are treated as xvalues; rvalue references to functions are treated as lvalues whether
named or not. — end note ]
struct A {
int m;
};
A&& operator+(A, A);
A&& f();
A a;
A&& ar = static_cast<A&&>(a);
The expressions f(), f().m, static_cast<A&&>(a), and a + a are xvalues. The expression ar is an lvalue.
— end example ]
>Про что несет?
>rvalue это свойство
Как-то даже грустно стало. А ведь когда 11 стандарт вводили об этом знал каждый. Похоже я слишком старый, скоро будут уже 2000++ года рождения закатываться. Стандарт, раздел 5, Expressions:
[ Note: An expression is an xvalue if it is:
(7.1) — the result of calling a function, whether implicitly or explicitly, whose return type is an rvalue reference
to object type,
(7.2) — a cast to an rvalue reference to object type,
(7.3) — a class member access expression designating a non-static data member of non-reference type in which
the object expression is an xvalue, or
(7.4) — a .* pointer-to-member expression in which the first operand is an xvalue and the second operand is
a pointer to data member.
In general, the effect of this rule is that named rvalue references are treated as lvalues and unnamed rvalue
references to objects are treated as xvalues; rvalue references to functions are treated as lvalues whether
named or not. — end note ]
struct A {
int m;
};
A&& operator+(A, A);
A&& f();
A a;
A&& ar = static_cast<A&&>(a);
The expressions f(), f().m, static_cast<A&&>(a), and a + a are xvalues. The expression ar is an lvalue.
— end example ]
>Как-то даже грустно стало.
Ну это оттого, что ты нифига не знаешь.
> А ведь когда 11 стандарт вводили об этом знал каждый.
А я до сих пор знаю, в отличие от тебя.
> Стандарт, раздел 5, Expressions:
Стандарт, раздел 6.10 [basic.lval] http://eel.is/c++draft/basic.lval#1.note-1
[ Note: Historically, lvalues and rvalues were so-called because they could appear on the left- and right-hand side of an assignment (although this is no longer generally true); glvalues are “generalized” lvalues, prvalues are “pure” rvalues, and xvalues are “eXpiring” lvalues. Despite their names, these terms classify expressions, not values. — end note ]
> я до сих пор знаю
> что такое "именованный rvalue"
Ловкая попытка съехать, но нет.
>Самый прикол в том, что r/lvalue относится не к значениям, а к выражениям.
>Despite their names, these terms classify expressions, not values
>6. Statements
>5. Expressions
Так вроде ты и просил объяснить тебе про выражения. Не очень понимаю твои претензии.
Куда съехать? Зачем ты рандомно цитируешь названия разделов стандарта? Ты можешь ясно выражаться?
Я намекал, что "именованный rvalue" — это бессмысленное словоупотребление.
>>Куда съехать
Хто здесь?
>> "именованный rvalue" — это бессмысленное словоупотребление
Да нет, это именно что rvalue который трактуется как lvalue. Вполне себе жизненное особенно в шаблонах.
> [ Note: An expression is an xvalue if...
Т.е., как я и говорил, lvalue/prvalue/xvalue (и их надклассы типа glvalue и rvalue) — это категория выражения.
Именованными бывают переменные, функции и т.д.
Ты предъявишь то, что ты называешь "именованный rvalue" или можно считать, что ты слился?
>что ты называешь "именованный rvalue"
>In general, the effect of this rule is that named rvalue references are treated as lvalues and unnamed rvalue
references to objects are treated as xvalues; rvalue references to functions are treated as lvalues whether
named or not
Может перевод слова "named" тебе не понятен?
>Именованными бывают переменные, функции и т.д.
Или все же понятен?
Как ты кстати назовешь:
int&& a ; ?
>что ты слился?
Понимаю что школотронство рвется наружу, но ты выбрал не тот тред чтобы его выпускать, его читают: ты, я, два с половиной залетных которые меняются каждый день.
Так и думал, что ты один из тех даунов, которые не отличают "rvalue" от "rvalue reference".
Или, более общó, value category от типа.
http://en.cppreference.com/w/cpp/language/value_category
Each C++ expression (an operator with its operands, a literal, a variable name, etc.) is characterized by two independent properties: a type and a value category. (курсив не мой)
>>1021850
Вот то что я пытался донести в оригинале, согласно твоей собственной ссылке:
Even if the variable's type is rvalue reference, the expression consisting of its name is an lvalue expression;
Ну, а понятие "named rvalue" ты можешь в стандарте почерпнуть оно много где используется.
>которые не отличают "rvalue" от "rvalue reference
Как ты кстати сделаешь именованный prvalue?
Ты, главное, не расстраивайся. Многие ньюфаги не отличают rvalue от rvalue reference. И задаются вопросами типа "я передал аргумент в функцию по rvalue-ссылке. Почему он не перемещается? Ведь для rvalue должен вызываться конструктор перемещения". Потом многие понимаю, почему, когда начинают отличать типы от категорий значений (type и value category).
Только ты вот этого не осознал до сих пор. У тебя на этот счёт какие-то неоформленные, туманные представления "ну эта, как его, именованный rvalue может вести себя как lvalue.... в шаблонах вот полезно... да..."
> Вот то что я пытался донести в оригинале
А я пытался донести, что словосочетание "именованный rvalue" лишено смысла.
> Как ты кстати сделаешь именованный prvalue?
Так же, как rvalue: никак.
>ньюфаги
Тебе все еще бомбит с моей толстоты? >>1022193
Ну извини :^)
Да, я хотел шлепнуть в продолжении шлангом по лбу с вопросом, а сюда что вставишь forward или move? Но я смотрю это уже сделал кто-то до меня.
>Так же, как rvalue: никак.
Двоечка молодой человек, идем и читаем собственную ссылку, там все есть http://en.cppreference.com/w/cpp/language/value_category
>Тебе все еще бомбит с моей толстоты?
Да, известный трюк. Облажался — объяви, что это ты просто толстил.
В общем, слив засчитан.
Да, для упрощения понимания небольшой postreference:
>Как-то даже грустно стало. А ведь когда 11 ?>стандарт вводили об этом знал каждый. >Похоже я слишком старый, скоро будут уже >2000++ года рождения закатываться.
Толстота это вот это /\ /\ /\ /\
>>1022251
Да ладно тебе, обычно таких буйных не попадается.
И правда, лучше б поделились толковым текстом для ньюфагов про все эти lvalue, rvalue и прочее
мимовечныйньюфаг
сено - lvalue, солома - rvalue
Так вы задавайте вопросы, у меня этот тред весит прикрепленным, могу отвечать иногда :^)
Вообще у яндекса были раньше неплохие видео:
https://www.youtube.com/watch?v=oQDOqB1asNw
>>ньюфаги
>Тебе все еще бомбит с моей толстоты?
С чего ты взял, что употребление слова "ньюфаги" означает, что мне "бомбит"? Я констатировал факт, что ньюфаги часто задают такие вопросы. Потому что правда задают.
Или тебе показалось, что я тебя обзываю ньюфагом?
>>1022242
>Двоечка молодой человек
А на каких IT-ресурсах ты ещё сидишь?
А вот и первый пост 0й ценности. Как и ожидалось после указания на очевидные ошибки.
Ой-вей. Ты-таки решил идти до конца и перебрать все модели поведения лузера.
Ну да, есть у тебя в голове каша из понятий со сходными названиями, и тебе на это указали. Это настолько уязвило твоё самолюбие?
Почему int a, a не int a? У переменной тип - указатель на интыжер, так какого хрена все пишут звёздочку около самого имени? Или ещё лучше, int a. Это вообще откуда пошло?
const int const a; лол
Ну всё, мама меня не научила звёздочки вставлять.
КРЧ, проблема с расположением звёздочки, вот.
- Успокойтесь, у вас обычный гемоppой
- Все, Изя
Можно подробнее о том, как это работает? С конструктором вместо функции сработало бы?
>Можно подробнее о том, как это работает?
Нельзя, потому что это не работает.
> С конструктором вместо функции сработало бы?
Что именно?
Потому что в инициализаторе мембера ptr находится lvalue и компилятор пытается вызвать конструктор копий, который у unique_ptr удалён.
Если бы всё так просто было.
Это значит, что ты будешь ковырять всю ту же легаси-хуйню, что и все, просто на собеседовании хуесосы будут изображать из себя ГУГЕЛЬ и просить на доске перевернуть бинарное дерево
class SomeClass {
boost::mutex m_mtx;
std::list<Elem> m_list;
...
}
void SomeClass::removeF( std::list<Elem>::iterator _elem_it ) {
m_mtx.lock();
m_list.erase( _elem_it );
m_mtx.unlock();
}
void SomeClass::Scan() {
for ( const auto & it : m_list ) {
m_mtx.lock();
DoSomeConstShit( it );
m_mtx.unlock();
}
}
Если я буду писать свою ось, то только доказательным методом. Сделать это на плюсах без серьёзной потери производительности невозможно.
Кажись тебе надо переписать цикл. Потому что ты можешь удалить элемент после взятие ссылки и до захвата мютекса.
Неа, удаление элемента из списка не атомарная операция. Перед проход по списку в цикле захватывай мьютекс.
И еще:
1. Для захвата мьютекса используй lock_guard (RAII, же).
2. В C++11 мьютексы есть в STL.
3. Изменение разделяемой структуры из нескольких ниток кривой дизайн. В дальнейшем много проблем можно огребсти. Всю многопоточность стоит сводить к схема поставщик\получатель (через thread-safe очереди).
Спасибо. А как добавить/убрать компилятор?
Вот есть код, призванный передать мне результат выполнения комманды из консоли и он отлично работает.
char buffer[128];
std::string result = "";
FILE* pipe = _popen("ping 8.8.8.8", "r");
if (!pipe) throw std::runtime_error("popen() failed!");
while (!feof(pipe)) {
if (fgets(buffer, 128, pipe) != NULL) {
result += buffer;
}
}
_pclose(pipe);
Но стоит заменить мне тренировочную "ping 8.8.8.8" на реальную "ffprobe.exe 1.webm", то всё. Вывода нет, реакции нет.
При этом, в тестовом консольном проекте "ffprobe.exe 1.webm" даёт адекватный вывод.
ЧЯДНТ?
inb4: Использую MFC
С разметкой продолбался, но суть понятна.
При этом, с исполнением команды всё явно ок, т.е FILE* pipe = _popen("ffplay.exe 1.webm", "r"); запускает 1.webm в любом случае.
http://forums.codeguru.com/showthread.php?246447-_popen()-in-MFC
Тут пишут, что всё MFC виноват, слишком слоупочный.
Попробуй как-то так не бейте - лучше обоссыте:
#include <future>
...
void something();
...
auto handle = std::async(something);
handle.get();
Спасибо!
Решил вкатиться в программирование ради интереса. После изучения большей части синтаксиса чистого Си навалила скука. И тут я открыл для себя OpenGL. Все бы шло замечательно, но в учебнике где используется чистый Си, уже сразу с основ идут нерабочие примеры и не только у меня эта проблема. Глянув новые книги и видеокурсы, стало ясно что везде используются плюсы. Вдобавок, как я понял, гуи пишутся с использованием qt,
а там опять плюсы.
Короче, для написания приложений с гуи и трехмерной графикой годятся только плюсы? Или есть альтернативы для чистого Си? (ну если не считать gtk+ для гуев и старой книги по OpenGL. Просто страшно начинать изучать плюсы после беглого просмотра тредов.
Как вывести std::basic_string<TCHAR> на консоль?
Кормена.
>>1024600
О том, что один пытается утереть другого, но сам не читает то, что вставляет.
>>1024604
TCHAR - это либо WCHAR, либо CHAR в зависимости от макроопределения UNICODE (или как там).
>>1024602
Твои варианты:
WriteConsole(string.c_str())
std::cout<<string //если без юникода
std::wcout<<string //а вот здесь ты жестоко наебёшься, в винде это не работает от сллова "никак"
Я про то, о чем спор вообще был? Я так и не смог понять. Так там два дебила говорили об одном, один просто с сайта саттера линки таскал, второй из доки страуса, лол. При этом один поехавший дед, второй селюк не знающий английский. Крестовое комьюнити короч.
>TCHAR - это либо WCHAR, либо CHAR
Так вроде wcout перегружен для обоих.
http://cpp.sh/37q2h
>TCHAR
Ненужно.
>>1024605
>TCHAR - это либо WCHAR, либо CHAR в зависимости от макроопределения UNICODE (или как там).
Самое идиотское, что могла придумать Microsoft — что приложения можно будет собирать для разных версий Windows (NT и не-NT) просто определением или не определением одного макроса.
Если тебе так нравится кодить под WinAPI, то лучше просто забудь про то, что UNICODE может быть НЕ определён. Считай, что он всегда определён и TCHAR=WCHAR.
Если ты, конечно, не собираешься компилять под Windows 95.
Храни все в UNICODE, если тебе важно именно содержимое строк. Если тебе необходимо иметь и то и то в одном массиве одновременно - погугли type erasure container.
Лучше доучи, базовое с++ ооп за один день берётся, а std'шный мусор OpenGL/qt не юзают, т.к. имеют уже свои более удобные аналоги.
>>1024617
На все winaip функции есть варианты w/t/c. Всего-то надо один раз загуглить их. Однобайтовое говно всегда может понадобится, не все сторонние либы хотят юзать юникод.
>Однобайтовое говно всегда может понадобится, не все сторонние либы хотят юзать юникод.
Т.е. ты вместо обёрток над вызовами либ предлагаешь дизайнить всю аппликуху вокруг либы?
Это же от конкретной либы зависит, как там будет удобней. Если там есть внутренние калбаки, или может она вообще на кодировке utf8 работает. Некоторые вещи бывает проще делать модульно, чем на всё свои обёртки пилить.
Не обращай внимания, тут это часто вбрасывают.
Для меня это - Нечитабельный, неюзабильный, сферический в вакууме.
Оригинальная идея была хорошая, людям предлагалось не изобретать велосипеды, плюс помогает делать код более кроссплатформенным.
Но всё это разбилось об реальность ооп в с++, где для эффективного использования std приходилось значительно повышать свой уровень знания языка, типа следить за лишними копированиями, продлевать время жизни объектов и.т.д. Т.е. либа которая должна была упростить жизнь, её начала усложнять. Основные разработчики сторонних либ и фреймворков решили отказаться от использования унифицированного std в пользу оптимизации своих решений. Т.к. основная масса разработчиков всё же не пишут сферические хелловорлды, то брать за основу именно std им нет смысла.
Сейчас новые стандарты c++ направленны на изменение языка именно в сторону упрощения использования std, но люди ленивые, и стек технологий тоже не спешит перестраиваться под это. Потому это остаётся не нужным, хотя гики всегда есть. Можешь и ты таким стать, а люди которые будут потом сопровождать твои проекты будут тебе очень "благодарны".
Ну хуй знает чувак, какой язык - такая и стандартная библиотека. Сам stl не пользую, пользую разные .h-only либы для контейнеров и алгоритмов, а в основном рабочем проекте свой фреймворк. Но есть все-таки области применения, во первых - на stl просто учиться, понимать концепции. Во вторых - мелкие проекты до 250 000 строк включительно вполне себе неплохо ложаться на stl, ввиду явной простоты логики и возможных зависимостей. Бывают конечно адский сложные маленькие проекты, но ты меня понял.
>Так вроде wcout перегружен для обоих.
Будет сложно запомнить то, что в wcout нельзя выводить вчары. Лучше вообще не использовать его.
>>1024616
std:variant или своя структурка с мемберами string и wstring. Если один пустой, то данные в другом. Очень странное задание.
>>1024713
>а std'шный мусор OpenGL/qt не юзают,
У кучи Кутэшных контейнеров есть совместимость или метод преобразования с/между std-контейнерами. Ты можешь писать на Кутэ без std, но ты почти всегда сможешь заюзать std из Qt.
>>1024713
>На все winaip функции есть варианты w/t/c.
Все современные используют wchar.
>>1024797
>типа следить за лишними копированиями
У тебя ничего не взорвётся от лишних копирований, и есть множество оптимизаций, включая тот же (N)RVO, а методы контейнеров инлайнятся.
>Основные разработчики сторонних либ и фреймворков решили отказаться от использования унифицированного std в пользу оптимизации своих решений.
Лолшто.
>Потому это остаётся не нужным,
Кому?
Я не он но,
>Лолшто.
Это так, чем дальше в лес, тем меньше крупных проектов на stl. Посмотри гугловый софт, фейсбучную опенсорсную часть, топовые гитхабовские проекты. В проприоритарных проектах я его лично вижу все реже. Единственный кто его еще активно продвигает в коде - это Microsoft (который его через хуй поддерживает, лол).
>У тебя ничего не взорвётся от лишних копирований
Так эт, если нет zero-cost-abstractions то кресты это хуита полнейшая без задач.
Родной, ASCII - подмножество UTF-8.
На пальцах. Unicode это не кодировка, это метод. Кодировки это UTF-8/16/32. UTF-8 отличается тем, что в зависимости от кодируемого диапазона меняется кол-во байт представления символа. И внезапно символы 0-127 кодируются одним байтом.
Мейби, каждому своё, но лично мне было бы лень учить то, что с высокой степенью не понадобится.
>>1024802
> почти всегда сможешь заюзать std из Qt
Это напоминает "Как сделать троллейбус из буханки хлеба". Читай контекст вопроса: человек спрашивал как ему проще всего перейти, а не как ему заморочиться.
> У тебя ничего не взорвётся от лишних копирований
Я говорил "эффективного использования", а побыдлокодить можно на чём угодно.
>Так эт, если нет zero-cost-abstractions то кресты это хуита полнейшая без задач.
Так в том и прелесть, что в нагруженном коде ты можешь обойтись без лишних аллокаций, а в гуйне, например, хуярить как проще, лишь бы работало. В Qt, например, сплошной пимпл, аллокация на аллокации, но работает все равно быстрее жабы или браузерной параши.
>В Qt, например, сплошной пимпл, аллокация на аллокации, но работает все равно быстрее жабы или браузерной параши.
И вот после этой хуйни подавай им нормально работающий KDE без лагов.
Вообще, анон прав - STL-контейнеры редкостная залупа для хуяк-хуячанья, причём на редкость неудобная, в которую полтора десятка лет тащили невладеющие строки.
Еще через десяток лет, когда потребности опять поменяются, они туда протащат наконец таки ренджи, спаны, интрузивные контейнеры, оптимизацию для мелких векторов и строк, контейнеры которые можно будет юзать с униками без их собственных рефкаунтеров, еще через 2 десятилетия мб локфри контейнеры и конкурентные очереди с блекджеком притащат - и это все опять окажется никому нахуй не нужно как string_view, который у каждого проекта уже свой, либо как футуры с асинками, которые просто тупо уебские настолько, что их все сами под свои нужды реимплементируют.
Это заработок методом рекурсивного спуска макдака в кассира.
не верьте этому пиздюченку, он не щарит на самом деле
>Это так, чем дальше в лес, тем меньше крупных проектов на stl. Посмотри гугловый софт, фейсбучную опенсорсную часть, топовые гитхабовские проекты.
Охуительные инсайдерские истории. Неполенился, залез на гитхаб, взял первые четыре игровых движка: cocos2d, godot, cryengine, sfttech. Во трех используются stl контейнеры. В godot, написали свою реализацию контейнеров, с интерфейсом аналогичным stl, ололо.
>>1024865
>И вот после этой хуйни подавай им нормально работающий KDE без лагов.
Попробуй использовать нормальную ось вместо линуха.
>ренджи, спаны, интрузивные контейнеры, оптимизацию для мелких векторов и строк, контейнеры которые можно будет юзать с униками без их собственных рефкаунтеров, еще через 2 десятилетия мб локфри контейнеры и конкурентные очереди с блекджеком
Половина из этого есть в бусте, вторую половину добавлять бессмысленно, поскольку покрывает какие-то весьма специфические случаи (как например локфри контейнеры). А ты ебанат, если этого не понимаешь
>взял первые четыре игровых движка
>гугловый софт, фейсбучную опенсорсную часть
Не ну сравнил так сравнил ни прибавить не убавить.
>весьма специфические случаи (как например локфри контейнеры)
Хотя понятно, ты просто манька из /gd/ за еду.
Оптимизации для мелких строк/контейнеров втащили кстати, но не по Александреску, а просто на стеке кусок хярят в теле класса.
>Попробуй использовать нормальную ось вместо линуха.
Дык, для станционного пека выбора и нет. На ноутах есть мак (который может зависнуть, но интерфейс у него никогда не лагает, даже при мертвой хватке ядра).
>Половина из этого есть в бусте,
В бусте только интрузив контейнеры из этого списка, остальное — тащи откуда хочешь, из кучи реализаций gsl-а, фейсбучной библиотеки, разных реализаций ренджей, из llvm если хочешь, с миру по нитке блять. В итоге вместо того чтобы просто сесть и писать — иди ищи и трахайся с деплоем тыщи сторонних библиотек, со своими зависимостями, странностями и просто кодстайлом.
>какие-то весьма специфические случаи (как например локфри контейнеры)
Так. 2017-й год. Уже даже бюджетные процессоры все поголовно 6-8 ядерные, даже в ебучий STL, который развивается со скоростью ребёнка с синдромом дауна, запилили паралельные алгоритмы, можель памяти, обертки над тредами и мутексами и все вот это.
Что же говорит анон об этом? Нинужна! Ой, иди нахуй просто.
>>1024939
Щито? Я только недавно на последнем шланге гонял бенчмарки фоллиевского small_vector, который этим занимается, и было не похоже на это. Пруфца бы.
Ну хуй тебя знает. У меня CLion постоянно уходит в свопы почти при каждом ручном инклуде (автоматические из подсказок моментально подставляются, лол) или при попытках навигации по подключенным где-то в залупе объявлениям, виснет намертво на 10-20 секунд, но интерфейсу похуй - экраны листаютсятак же плавно, курсор вообще никогда не фризится.
CLion это говно ебаное, какое еще поискать. Пользуй что угодно другое и будет ок. Я например когда приходится в линукса выйти пробздеться использую codelite.
Вопрос уровня: как относится к гугловскому кодстайлу? Трупстрауса же пишет с 4 отступами, а эти пидоты с 2, так это выскочкино говно или гениальное гугловское изобретение?
>>1024953
Дык, на полноценной пеке с 32 гигами и линуксом он летает (зато курсор таки фризится), другое дело что на маке альтернатив нету вообще - икскод говнище которое умеет даже нормально автокомплитить плюсы и вечно в куче багов, кодлайт, кдевелоп и прочие выглядят на макоси как и все что пишется для линукса а-ля вырвиглаз, остается только культя и цлион. Культя в системное сглаживание не умеет и это тоже пиздец, вот так.
>Как анон относится к Qt
ну вот я для себя сделал такой вывод: хочешь относительно без проблем устроится крестомакакой, то у тебя два пути
- первый это игрострой, ну а в россии щас это мобилки, по сути - что там надо задрачивать, понятно
- и остальные вакансии - это надо задрачивать qt
к сожалению
вот так все просто
кстати, в этом то и преимущество табов - их отображение ты можешь настроить как 2 так и 4 пробельных места
таким образом, в коде табы, а у разных людей на проекте отображается, как им удобно
зачем корежишь фамилии? представь, твою фамилию переиначат, будет же обидно, не так ли
Не так.
> в зависимости от кодируемого диапазона меняется кол-во байт представления символа
ЕМНИП, можно опкодом выбрать другую страницу и если символы неподалёку, т оможно по байту на символ для любого языка.
>>1024804
>Так эт, если нет zero-cost-abstractions то кресты это хуита полнейшая без задач.
Если совсем грубо - то да, но тебе не нужны зиро-кост абстракшнз на всё вообще. Про контейнеры я уже сказал.
>>1024821
>Читай контекст вопроса: человек спрашивал как ему проще всего перейти, а не как ему заморочиться.
Ты удивишься, но в самом Qt подводных камней порядочно, чего только COW стоит. Контейнеры из Кут очень похожи на контейнеры из stl. ОП вопроса страшился не эстээля, а количества премудростей в плюсах.
>Я говорил "эффективного использования"
"эффективное" != "математически оптимальное"
>>1024884
Потому что виндовая CRT (с помощью которой реализована STL) с багом, на который МСу насрать.
Как вообще его читать-понимать и нужно ли?
>просто сесть и писать
Смешная шутка.
>В бусте только интрузив контейнеры из этого списка
Как насчет boost::lockfree? Как я понимаю, тебя он не устраивает? Ну так пердолься с либами, раз не устраивает, это сугубо свои половые трудности. То что тебе нужно это еще не значит что оно должно быть в стандарте, понимаешь?
>>1024933
>Не ну сравнил так сравнил ни прибавить не убавить.
Мои пруфы не пруфы? Понемаю, бывает.
а) купить
б) украсть
в) качнуть последний драфт, публично выложенный комиссией перед утверждением (бывают мелкие исправления перед утверждением)
>Как вообще его читать-понимать
а) в глубину, ЕВПОЧЯ: не понимаешь термин - ищешь определение
б) с начала
Предлагаю забить.
> То что тебе нужно это еще не значит что оно должно быть в стандарте, понимаешь?
Я щас кекнул: ну вот мне нахуй не нужна STL. По твоей логике её от туда можно просто выпилить и не тратить время - все сделают в бусте, а комитет пусть лучше прикладывает силы к языку.
А вообще, ахуенные какие-то у тебя доводы. Долбоёбский лист из STL, который копирует каждый элемент, хранит овердохуя лишней инфы и просто на кой-то хуй рефкаунтит содержимое, из-за чего при малейших лагах придется либо писать в C-style либо тащить буст - нужен, как и вектор со строкой которые будут алоцировать хуй знает сколько памяти когда нужно десяток символов в него закинуть, что можно было бы сделать на стеке - тоже зачем-то нужен, а вот нормальный набор контейнеров под разные задачи, который есть в любом нормальном языке (я сейчас не про расты с говнами) - нахуй не упали. Ну и любитель же ты говна.
>на кой-то хуй рефкаунтит содержимое, из-за чего при малейших лагах придется либо писать в C-style либо тащить буст - нужен
Где карту получали туда и идите.
Я так понимаю: Из-за проблем с кросс-компиляцией и бинарной совместимостью, некоторые люди решили делать все в заголовках, чтобы принудительно компилировать нужно было всем, а не таскать вероятно не совместимые бинари. Далее, если h-only либ очень много и они большие (boost) компиляция проекта увеличивается в разы. Теперь мы заводим свой prcomp.c + precomp.h, которые служат только для того, чтобы получить объектный файл, который не нужно будет часто перекомпилировать, и который не нужно таскать по репозиториям.
Как-то так?
>> То что тебе нужно это еще не значит что оно должно быть в стандарте, понимаешь?
>Я щас кекнул: ну вот мне нахуй не нужна STL. По твоей логике её от туда можно просто выпилить и не тратить время
Ёю твою мать...
Предкомпилированные заголовки (не)нужны потому, что один и тот же заголовок может быть включён в несколько исходников. Кэширование результата компиляции заголовочного файла (в который может быть включено всё, что используется во всей программе) сильно ускоряет компиляцию.
Жаль что платный. На торрентах еще не выложили?
>рупстрауса же пишет с 4 отступами, а эти пидоты с 2, так это выскочкино говно или гениальное гугловское изобретение
Экономия места в кодбазе.
>Кэширование результата компиляции заголовочного файла (в который может быть включено всё, что используется во всей программе) сильно ускоряет компиляцию.
gcc и msvc умеют держать это на диске, или на каждый сеанс компиляции новый кэш делается?
Я просто инвертировал твое утверждение, бывшее отрицательным по отношению ко мне — с точки зрения дискретной математики все ок, надуй иди.
>>1025173
Да нет, я вот недавно попробовал сам — и подсел. Ахуенно.
Переустанови Windows
Тебе нужно японский текст из utf-8 в кодировку для названий виндовых файлов сделать? Гугли как это делается на чем тебе нужно.
И проверь еще в какой кодировке твои исходники.
https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd317748(v=vs.85).aspx
Майки тут божатся, что для ntfs используют unicode. Попробуй в каком-нибудь Notepad++ пересохранить исходник в utf-8.
Может еще как-то студию можно допердолить.
Гугли сам. Если я правильно понял - без предкомпилированного заголовка им придётся компилировать его в каждой единице трансляции.
>>1025177
>Я просто инвертировал твое утверждение
1) Не моё.
2) "Инвертируя" (лолкак) утверждение, ты не оспариваешь его.
>>1025180
>CreateDirectoryA
>L"хуй"
Твоя стопа умерла в зародыше.
Не совсем, в принципе, я до конца не понимаю что нужно делать.
Идея в том, чтобы сделать двухсторонний преобразователь из юникода в аски, чтобы работало с любыми символами.
К примеру, банально создать папку через CreateDirectoryA, или это функцией невозможно создать "Jхуй花咲くいろは2" ?
>>1025202
Все в utf-8, проверил даже.
1) Unicode - это не utf8 (что такое unicode() - даже не знаю).
2) В каком месте описания CreateDirectoryA написано, что ты можешь передать UTF-8 и получить читаемый текст?
unicode() -- toUTF8()
>То есть Utf-8 не применим в WinAPI ?
Бинго, блядь.
>Как с этим справиться?
Никак.
http://en.cppreference.com/w/cpp/io/basic_fstream/open
Открывай файлы через WinAPI.
Олсо, обрати внимание на эту строчку:
void open( const std::filesystem::path &filename,
ios_base::openmode mode = ios_base::in|ios_base::out );
(4) (since C++17)
И клацкни ссылку на std::filesystem::path. Там поймёшь сам. C++17 включается в gcc экспериментально через -std=c++1z
Пруфы на что?
employer тебе не предоставляет?
Там автокомплита нет
>Ладно, основная причина - gcc не открывает файлы по std::wstring.
>Как с этим справиться?
Есть такая либа, называется nowide. Есть как в виде boost::nowide, так и в самостоятельном виде. Intent — избавиться от необходимости использовать некоторые w- функции и сделать это переносимо. Сам не пробовал, т.к. я, слава б-гу, не спермоблядь. Но, как я слышал, пользователям данной ОС она нравится.
Заебался использовать сlang вместе с уебищным mingw или msvc.
Никогда, это просто нахуй никому не нужно.
Кстати, посмотрел http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4656.pdf и... блять, ну нахуя это говно (asio) тащить в стандарт? Надеюсь и в 20-м отклонят нахуй.
> Надеюсь и в 20-м отклонят нахуй.
Оставь надежду. Я надеялся что filesystem не смогут протащить — но нет, протащили.
Дык, fs хоть немного попахивает годнотой.
Это же чудище требует создавать по 5 классов ради того чтобы послать ебаный пинг и получить ответ.
CLion.
А отсутствие профайлера он окупает быстрым стартом и настраевыми хоткеями (можно шлятся по коду ебаной средней кнопкой мышки! гипгип ура) и наличием человеческого мультикурсора (в студии, как и остальных пирдольках от спермы, даже с этим в 2017 проблема).
Он безбожно тормозит, в отличие от VS, которая хоть как-то сносно работает на моем ноутбуке.
Он тормозит только во время индексации, после летает. VS тормозит всегда по-немножку, лол.
Ну я вот просто думаю, что лучше VS + VS Assist X/Resharper C++ или CLion.
Кстати, тормозит Clion в основном при выделении кода, это прямо ощутимо замечается.
В VS такого нет
Хуй через койчо, дебич.
>>1025443
>тормозит, в отличие от VS,
Телл ми мор фаггит. Последняя нативная студия - 14.
>>1025449 >>1025448
Это просто, блядь, неважно: Клион или Студия.
>Последняя нативная студия - 14.
Если про полностью нативную говорить - 10, вообще-то. После начались лаги (они поэтампно портировали на дотнет).
В 10 и ниже нет почти нихуя, с тем же успехом можно VS Code использовать с плагинами
Там нихуя нет потому что они в то время таким образом двигали дотнет, и наплодили решарперов с прочими асистентами.
Но не суть - это была последня нативная реинкарнация студии.
Кому что нравится.
Вообще, вне винды конкурентов клиону и нет. Нихуя не умеющие культи, кодлайты, вено забагованные в говнище кдевелопы и икскоды...
>Нихуя не умеющие культи
>Этот ВЕЗДЕ ОДИНАКОВО УЕБИЩНЫЙ рендеринг шрифтов
>через раз работает с cmake-проектами
define нихуя (нахуй тебе Кутэ? Тебе креактор предлагают, а не Кутэ)
Шрифт меня устраивает. Надеюсь, ты про ИДЕ говоришь, а не про Кутэ, который ьебе не предлагали.
Да, ебло тупое, я именно что про культьКреэйтор говорю (ибо по иронии судьбы, что называется, в самом куте системное сглаживание шрифтов нормально работает). Если тебя устраивает шрифт - ты либо сидишь на мониторе 720x480, либо просто долбишься в глаза и ничего лучше не видел.
только только вкатываюсь
>я именно что про культьКреэйтор говорю
`нихуя’ undeclared (first use in this function)
> Если тебя устраивает шрифт - ты либо сидишь на мониторе 720x480, либо просто долбишься в глаза и ничего лучше не видел.
Вариант "мне насрать на шрифт" ты не рассматриваешь?
>>1025616
Это каким боком к плюсам относится? Иди в ньюфаг-тред или новый создай (про винду).
>>1025767
while(cin>>word, word!="\n")
например. Контролз тебе не поможет - оператор>> возвращает не буль и не значение ошибки.
http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt
>Контролз тебе не поможет - оператор>> возвращает не буль и не значение ошибки.
Да, он возвращает стрим. У которого есть оператор bool
http://en.cppreference.com/w/cpp/io/basic_ios/operator_bool
Блин, забыл. Этот оператор проверяет fail(), но fail() не проверяет EOF-статус.
>fail() не проверяет EOF-статус
Действительно.
Но если выставлен eofbit, то при следующей попытке чтения будет выставлен failbit. Так что while (cin >> ...) работает.
>Вариант "мне насрать на шрифт" ты не рассматриваешь?
Когда ты днями работаешь с текстом — на него похуй быть ну никак не может, если он не пиздоглаз.
>он
>долбоеб которому похуй на эти шрифты
>>1025830
>`нихуя’ undeclared (first use in this function)
>>1025482
>>Нихуя не умеющие культи
У тебя парсер говно.
>Это каким боком к плюсам относится?
Почему консольный ввод/вывод относится к плюсам, а графический - нет?
>Почему консольный ввод/вывод относится к плюсам, а графический - нет?
Консольный ввод/вывод есть в стандартной библиотеке, а окошек там нет
Где обсуждают нестандартные библиотеки для плюсов? Явно же не в ньюфаг треде.
Но тогда одна строка будет обработана дважды, разве нет? Что окажется в строке, если из потока ничего не считано?
>>1025837
>У тебя парсер говно.
`нихуя’ undeclared (third use in this ITT thread)
>>1025859
С твоим вопросом ("там ни один пример не компилируется") тебе вообще в MSDN, а не треды создавать. Учить одновременно WinAPI и даже C (хер с ними, с плюсами) тебе будет сложно.
WinAPI - это не библиотека для плюсов, это API ДЛЯ СИ.
>современное приложение на С++ - это графическое приложение
Ну так учи Qt, нахуй тебе сишное винапи чтобы рисовать окошки?
Скажу больше, эпоха десктопных приложений прошла, сейчас все переносится в веб.
>Но тогда одна строка будет обработана дважды, разве нет? Что окажется в строке, если из потока ничего не считано?
Я тут почитал и попробую подробно изложить.
Но сначала стоит заметить operator>> для string не читает пробельные символы. К которым, в частности, относится \n. Так что твой код точно работать не будет, если только ты не подставишь локаль, в которой \n не считается за пробельный символ.
Что касается failbit:
«The failbit
The failbit is set by the following standard library functions:
The basic_istream::sentry constructor, executed at the beginning of every input function, if either eofbit or badbit is already set on the stream, or if the end of stream is encountered while consuming leading whitespace.»
http://en.cppreference.com/w/cpp/io/ios_base/iostate#The_failbit
Так что если ты в новой строке нажимаешь Ctrl-Z и, насколько я помню, в Windows ещё надо нажать Enter, в отличие от *nix, где просто Ctrl-D достаточно, то при попытке прочитать из cin в string eofbit и failbit выставятся сразу, т.к. eof будет достигнут при попытке пропустить пробелы.
Что насчёт значения строки после облома: я так понял, она останется неизменной, т.к.
«2) Behaves as a FormattedInputFunction. After constructing and checking the sentry object, which may skip leading whitespace, first clears str with str.erase(), then reads characters from is and appends them to str as if by str.append(1, c), until one of the following conditions becomes true:»
http://en.cppreference.com/w/cpp/string/basic_string/operator_ltltgtgt
Я так понимаю, если checking the sentry object говорит, что всё плохо, то str.erase() не вызывается.
> sentry object,
http://en.cppreference.com/w/cpp/io/basic_istream/sentry
Это не мьютекс (я так думал), это посложнее что-то, там и пропуск вайтспессов есть.
>C/C++ я уже выучил
>современное приложение на С++ - это графическое приложение
Я так же думал в 13 лет, ничего, с возрастом пройдет
Вот вы хейтите графические приложения, а ведь сами ими пользуетесь. Тот же браузер или компьютерная игра - это графическое приложение.
В одной консоли много не напрограммируешь.
А кто эту жаваскриптину запустит? Кто будет отрисовывать для неё графику. Правильно, графическое приложение, в данном случае браузер.
Мы как-то с ребятами в универе хотели свою операционку написать. Я даже свой загрузчик написал на ассемблере и уложился в 512 байт.
А я как-то голый залез в море и насрал!
Я как-то лабу писал, решил выебнуться и написал на WinAPI за неделю, не зная ВинАПИ вообще.
>А кто эту жаваскриптину запустит?
Движок V8 в хромиуме.
>Кто будет отрисовывать для неё графику
Видеокарта, очевидно
>Правильно, графическое приложение, в данном случае браузер.
А вот нихуя не правильно. JS Electron, там из браузера только движок, а ты, пидор грязный, иди нахуй со своими окнами, сейчас все нормальные пацаны пишут на таких языках как пеашпи и питоно, а вечером ебут твою ЕОТ, пока ты дрочишь плюсы, живя с мамкой и поедая ее борщи
воид звёздочка и класс-энум для типа либо получать тип объекта динамически через typeid
std::variant
Вариант - это тимплейт, которому через аргументы нужно передать все возможные типы. Тип возвращаемого значения - инстанс этого тимплейта.
Или попердолиться с воид и typeid, и тогда будет void.
Я имел в виду, что проблема не в типах. Вот я обработал в треде какой-то таск. Как вернуть и треда результат обработки? Дополнительно передавать в тред лямбду, которая захватывает по ссылке локальную переменную, и при помощи лямбды присваивать этой локальной переменной значение?
Строго говоря, было бы очень неплохо иметь отдельный класс, который уничтожает тред, чтобы ты себе никогда в ногу не выстрелил, выйдя из вызывающего треда/функции и убив переменную для возврата. Это можно решить либо новым классом (деструктор которого будет всем этим заниматься), либо шаред_птром.
Олсо, глянь в бусте, с бустом не знаком.
Это копия, сохраненная 17 июля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.