Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!


[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 513 | 38 | 110
Назад Вниз Каталог Обновить

C++ #60 Аноним 13/10/17 Птн 12:27:06  1074841  
484388ab1c.jpg (110Кб, 750x422)
465440540.jpg (114Кб, 415x415)
Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый - https://2ch.hk/pr/res/1063107.html
Аноним 13/10/17 Птн 12:46:04  1074846
Вкатился!
Аноним 13/10/17 Птн 13:03:50  1074849
14808009930610.jpeg (757Кб, 2160x2160)
Вкатился, освятил тред рабочей станцией HP.
Аноним 13/10/17 Птн 13:22:07  1074853
>>1074849
Никогда не понимал, нахуй позировать лезть, если у тебя нога в шрамах и с синяками.
Аноним 13/10/17 Птн 13:48:18  1074864
>>1074841 (OP)
С++ раздутое говно для ООП макак.
Настоящие хакеры пишут на С.
Аноним 13/10/17 Птн 14:03:08  1074882
>>1074864
Проорал с хакира.
Ассемблеро боярин.
Аноним 13/10/17 Птн 14:14:16  1074887
>>1074882
Неженка!
Пишу в байткодах с помощью cat
Аноним 13/10/17 Птн 14:26:08  1074894
>>1074887
пишу сразу байткодом.
0010101011101010001010101110101000101010111010100010101011101010001010101110101000101010111010100010101011101010001010101110101000101010111010100010101011101010001010101110101000101010111010100010101011101010001010101110101000101010111010100010101011101010 пидоры.
Аноним 13/10/17 Птн 14:30:34  1074898
>>1074894
01010010 01100101 01100010 01101010 01100001 01110100 01100001 00101100 00100000 01101110 01100101 00100000 01110011 01110100 01101111 01101001 01110100 00100000 01110110 01110011 01101011 01110010 01111001 01110110 01100001 01110100 00100111 00100000 01101010 01100101 01110100 01110101 00100000 01110100 01100101 01101101 01110101 00101110 00100000 01010110 01111001 00100000 01101101 01101111 01101100 01101111 01100100 01111001 01100101 00101100 00100000 01110011 01101000 01110101 01110100 01101100 01101001 01110110 01111001 01100101 00101100 00100000 01110110 01100001 01101101 00100000 01110110 01110011 01100101 00100000 01101100 01100101 01100111 01101011 01101111 00101110 00100000 01001010 01100101 01110100 01101111 00100000 01101110 01100101 00100000 01110100 01101111 00101110 00100000 01001010 01100101 01110100 01101111 00100000 01101110 01100101 00100000 01000011 01101000 01101001 01101011 01100001 01110100 01101001 01101100 01101111 00100000 01101001 00100000 01100100 01100001 01111010 01101000 01100101 00100000 01101110 01100101 00100000 01100001 01110010 01101000 01101001 01110110 01111001 00100000 01110011 01110000 01100101 01100011 01110011 01101100 01110101 01111010 01101000 01100010 00101110 00100000 01010011 01101010 01110101 01100100 01100001 00100000 01101100 01110101 01100011 01101000 01110011 01101000 01100101 00100000 01101110 01100101 00100000 01101100 01100101 01111010 01110100 00100111 00101110 00100000 01010011 01100101 01110010 00100111 01100101 01111010 01101110 01101111 00101100 00100000 01101100 01101010 01110101 01100010 01101111 01101010 00100000 01101001 01111010 00100000 01110110 01100001 01110011 00100000 01100010 01110101 01100100 01100101 01110100 00100000 01111010 01101000 01100001 01101100 01100101 01110100 00100111 00101110 00100000 01001100 01110101 01100011 01101000 01110011 01101000 01100101 00100000 01111010 01100001 01101011 01110010 01101111 01101010 01110100 01100101 00100000 01110100 01100101 01101101 01110101 00100000 01101001 00100000 01111010 01100001 01100010 01110101 01100100 00100111 01110100 01100101 00101100 00100000 01100011 01101000 01110100 01101111 00100000 01110100 01110101 01110100 00100000 01110000 01101001 01110011 01100001 01101100 01101111 01110011 00100111 00101110 00100000 01001010 01100001 00100000 01110110 01110000 01101111 01101100 01101110 01100101 00100000 01110000 01101111 01101110 01101001 01101101 01100001 01101010 01110101 00101100 00100000 01100011 01101000 01110100 01101111 00100000 01100100 01100001 01101110 01101110 01111001 01101101 00100000 01110011 01101111 01101111 01100010 01110011 01101000 01101000 01100101 01101110 01101001 01100101 01101101 00100000 01110110 01111001 01111010 01101111 01110110 01110101 00100000 01100100 01101111 01110000 01101111 01101100 01101110 01101001 01110100 01100101 01101100 00100111 01101110 01111001 01101010 00100000 01101001 01101110 01110100 01100101 01110010 01100101 01110011 00101100 00100000 01101110 01101111 00100000 01101000 01101111 01100011 01101000 01110101 00100000 01110011 01110010 01100001 01111010 01110101 00100000 01110000 01110010 01100101 01100100 01101111 01110011 01110100 01100101 01110010 01100101 01100011 01101000 00100111 00100000 01110000 01111001 01110100 01101100 01101001 01110110 01111001 01101000 00100000 00101101 00100000 01110011 01110100 01101111 01110000 00101110 00100000 01001111 01110011 01110100 01100001 01101100 00100111 01101110 01111001 01100101 00100000 01110000 01110010 01101111 01110011 01110100 01101111 00100000 01101110 01100101 00100000 01101110 01100001 01101010 01100100 01110101 01110100 00101110 00100000
Аноним 13/10/17 Птн 14:35:00  1074899
>>1074894
>>1074898
Больше похоже на ASCII. Кого ты тут наебать пытаешься?
Аноним 13/10/17 Птн 14:47:30  1074909
>>1074898
Но она мертва.
Аноним 13/10/17 Птн 14:52:43  1074915
>>1074909
01001001 00100000 01101011 01101110 01101111 01110111 00111010 00110011
Аноним 13/10/17 Птн 15:07:50  1074930
>>1074915
>:3
Смайлоёб.
Аноним 13/10/17 Птн 16:40:53  1075011
Сап, анон. Я вот чего не понимаю. В C++ нет никаких инструментов для работы с массивами? Какого, блядь, хуя? Как он вообще живет? Не удалить, не вставить, ну охуеть.
Аноним 13/10/17 Птн 16:50:27  1075018
>>1075011
Блядь, создай. Но вообще только плюс. Вон в JS ввели, так эти дауны вообще всё через массив ебашут. Даже фронт, даже бэй, даже БД, Даже сокеты, даже небо блядь!
Аноним 13/10/17 Птн 16:52:16  1075019
>>1075018
Как что-то плохое, блядь. Зачем ездить на велосипеде, если есть автомобиль?
Аноним 13/10/17 Птн 17:01:24  1075023
>>1075019
Зачем ездить на велосипеде, если есть массив ты хотел сказать?
Алсо в крестах как я понял вектор то и есть тот же самый массив судя по всему.
Аноним 13/10/17 Птн 17:09:19  1075024
>>1075011
Вообще-то ни один язык не умеет "работать с массивами", а то, что называют массивами в других языках -- vector в c++ (изменяй как хочешь), ну или связный список.
Аноним 13/10/17 Птн 17:38:45  1075044
>>1075019
>Как что-то плохое, блядь. Зачем ездить на велосипеде, если есть автомобиль?
Ага, а потом возникают такие ФРАКТАЛЫ
http://php.net/manual/en/array.sorting.php
В плюсах нормально зделано, есть набор разных структур данных с понятными предназначениями и алгоритмами.
Аноним 13/10/17 Птн 17:57:08  1075052
>>1074853
когда на глазу фофан и муж-алкаш заставляет позировать, деваться больше некуда

теперь это алкашей тред
Аноним 13/10/17 Птн 18:07:47  1075062
>>1074853
Вот доебался, там одна мозоль и один синячок. А фотка хорошая вышла. Лучше посмотри на эту прекрасную рабочую станцию.
>>1074849
Аноним 13/10/17 Птн 18:47:24  1075084
>>1075011
std::vector
Аноним 13/10/17 Птн 19:33:55  1075099
P71013-184753.jpeg (1040Кб, 1034x1397)
Играли сегодня в пикрелейтед. Суть в том, что нужно соврешить еще 5 действий, чтобы в итоге получился ноль. Снизу уже есть две подсказки. Нужно начать с единицы и плюса. Или с пятерки. Выбираю вариант с единицей. Это значит, что пятерку трогать нельзя. Так что следующие возможные варианты : +7 или +2. Дальше либо -7, -3, +3, +3, +3, +2, +4, либо -2, -3, +3, +3, +3, +2, +4, x3, x2. Каждый вариант порождает еще больше вариантов. Сначала подумал, что легко такое реализовать, чтобы программка нашла все пути, по которым приходим к нулю (их несколько). Но теперь задумался и даже примерно не представляю, как это сделать. Есть идеи?
Аноним 13/10/17 Птн 19:36:08  1075103
>>1075011
Не понял что ты имеешь ввиду?
Статические массивы? int a[32];
Динамические массивы? std::vector, std::list

Ты о чем вообще?
Аноним 13/10/17 Птн 21:29:34  1075140
>>1075099
>Так что следующие возможные варианты : +7 или +2.
Можно только со второй строки брать? А потом только с третьей?
Аноним 13/10/17 Птн 21:34:39  1075141
15079124355660.jpg (420Кб, 1034x1397)
>>1075140
Нет, двигаться можно по вертикали, горизонтали и диагонали ЧИСЛО-ЗНАК-ЧИСЛО. Пример на пикреле.
Аноним 13/10/17 Птн 21:38:55  1075143
15079124355660 [...].jpg (423Кб, 1034x1397)
>>1075141
Один из способов прийти к нулю
Аноним 13/10/17 Птн 21:40:03  1075144
>>1075141
И наверх/назад нельзя?
Аноним 13/10/17 Птн 21:41:04  1075145
>>1075144
Можно. Но те знаки и числа, которые использовал, использовать повторно нельзя.
Аноним 13/10/17 Птн 21:42:56  1075147
>>1075099
На таких размерах можно сделать перебором, но пахнет ПОЛНОТОЙ
Аноним 13/10/17 Птн 21:45:30  1075149
>>1075147
>ПОЛНОТОЙ
ну хоть где-то матан пригодится
Аноним 13/10/17 Птн 22:07:47  1075164
>>1075099
Числа только однозначные?
Аноним 13/10/17 Птн 22:20:26  1075175
>>1075145
Самопересекаться?
Аноним 13/10/17 Птн 22:32:50  1075190
>>1075099
Строишь дерево и обходишь его в глубину.
Аноним 14/10/17 Суб 02:59:59  1075287
>>1075044
Ну не, там всё-таки в всоё время была фича в работе с бд и всё это было полезно.
Аноним 14/10/17 Суб 05:27:32  1075307
2ch, подскажи, неявное преобразование производного класса в базовый происходит альтернативно тому что делает dynamic_cast? Пример:

A a = new B; // Неявное преобразование
A
a = dynamic_cast<A*>(new B); // Явное преобразование
Аноним 14/10/17 Суб 06:19:47  1075308
>>1075099
> Выбираю вариант с единицей. Это значит, что пятерку трогать нельзя.
Хули нельзя, ты сказал
>>1075141
>двигаться можно по вертикали, горизонтали и диагонали
И
>>1075145
> те знаки и числа, которые использовал, использовать повторно нельзя

Если я начал с единицы, я не использовал 5!
Аноним 14/10/17 Суб 06:26:36  1075310
>>1075099
На тебе решения, начинающиейся с "1+" http://termbin.com/4szs
Проверяй на соответствие правилам, которые ты всё никак не можешь нормально описать
Аноним 14/10/17 Суб 06:37:34  1075311
>>1075099
http://termbin.com/tcknu
Аноним 14/10/17 Суб 09:31:24  1075329
>>1075011
> В C++ нет никаких инструментов для работы с массивами? Какого, блядь, хуя?
array
vector
list
deque
ассоциативный map
range for
куча всяких прикладных функций типа apply, sort
Что ещё хочешь?
>>1075307
Правильность первой строки проверит компилятор - если A - предок Б, то программа скомпилируется.
Во второй строке правильность проверит собранная программа во время исполнения (динамик каст вернёт нуллптр, если А - не предок Б).
Когда тебе известны оба типа - тип указателя и тип объекта, на который ты хочешь его направить - логично использовать только первый вариант, тогда ошибка будет выявлена компилятором.
Только если ты присваиваешь одному указателю другой указатель на объект с неизвестным типом, ты должен использовать dynamic_cast.
Аноним 14/10/17 Суб 10:25:14  1075334
Почему в С++ такой странный code style? Понимаю, что у С++ одно из самых старейших легаси, свои традиции и привычки, но почему повсюду (даже в учебных примерах) пишут такой нечитабельный вырвиглазный код?

void f() const
{
std::cout << m_x << '\n';
}
Аноним 14/10/17 Суб 10:29:12  1075335
>>1075334
И что тут странного? По мне так то что ты привёл в пример это самое читабельное и понятное что может быть в C++, ты нечитабельное и вырвиглазное не видел.
Аноним 14/10/17 Суб 10:31:02  1075336
>>1075334
Из code style тут только первая фигурная скобка перенесена да префикс m_ указывающий на поле класса. В остальном это язык, а не стиль. Однобуквенные имена для примеров это нормально.
Аноним 14/10/17 Суб 10:36:14  1075338
>>1075334
Как тебе такое?

#include <iostream>

template<typename Tag, typename Tag::type M>
struct Rob {
friend typename Tag::type get(Tag) {
return M;
}
};

struct A {
A(int a):a(a) { }
private:
int a;
};

struct A_f {
typedef int A::type;
friend type get(A_f);
};

template struct Rob<A_f, &A::a>;

int main() {
A a(42);
std::cout << "proof: " << a.
get(A_f()) << std::endl;
}
Аноним 14/10/17 Суб 10:43:02  1075339
>>1075338
Нихуя не понял, что тут происходит?
Аноним 14/10/17 Суб 11:30:22  1075352
code.png (24Кб, 1093x660)
>>1074841 (OP)
Вкатываюсь в многопоточность. За 5 минут на коленке собрал говнокод для суммирования последовательных чисел, чтобы просто проверить реально ли загружается несколько ядер. Запускается, работает, реально грузится 4 потока, но результат почему-то каждый раз разный как будто join() не работает или я х.з. что еще. Так что не так с этим говном?
Аноним 14/10/17 Суб 11:40:42  1075356
>>1075334
Потому что сам синтаксис языка такой. На С++ очень сложно, писать что-то читабельное и понятное, особенно новичкам и мидлам и зачастую тимлидам. Те кто могут использовать понятный code style в С++ это элита, но для этого надо очень хорошо знать язык и что испрользовать в языке а что нет. Например использовать очень ограниченно шаблоны, не использовать такие библиотеки типа boost, а лучше и без stl.
Вот, например, нормальные люди, кто пишет на С++ что-то посерьезней серверов у конторе у дяди коли, используют такие штуки как misra c++, embedded c++, rt c++ и т.д.
https://en.wikipedia.org/wiki/Embedded_C%2B%2B

Аноним 14/10/17 Суб 11:45:02  1075361
>>1075356
Все так, только код с умеренным бустом, стл и шаблонами будет читаемее, чем очередная итерация вложенных циклов на "си с классами".
Аноним 14/10/17 Суб 11:57:38  1075371
>>1075361
Ну про буст я очень сомневаюсь, ибо на деле знаю что это такое. Стл можно впринципе использовать более менее, но опять же не все подряд и с умом, но это чревато, например чтобы использовать итераторы, которые сами по себе не очень хорошая вещь by design, чтобы не писать телеги типа
typename std::vector<my_super_class::my_type_t::value::type>::iterator it = my_super_class_object.vector.begin();
то вероятно всего лучше использовать auto, но использование auto скрывает тип и делает код непонятным аля
auto v = myobject.get();
поэтому авто тоже не стоит использовать, но понятно что использовать шаблонные телеги типа как в премере выше тоже не вариант, поэтому люди часто вообще отказываются от них, ибо как только ты начинаешь что-то использовать из С++, то сразу тянется куча зависимых костылей языка, для того, чтобы это работало и выглядело нормально.
Аноним 14/10/17 Суб 12:07:20  1075373
Слышь, бустеры, вместо того чтобы рассказывать кто больше знает умных слов, лучше на деле покажыте какой длины ваши стл, объяснив нюфане, что не так с его говном >>1075352
Аноним 14/10/17 Суб 12:21:39  1075381
>>1075371
>использование auto скрывает тип
Проблема IDE.
Аноним 14/10/17 Суб 12:28:53  1075383
>>1075373
case 1: A1 = s; // <- break;
case 2: B1 = s;
Угадай, что будет, если 1 отработает позже 2.
Аноним 14/10/17 Суб 12:35:52  1075387
>>1075373
Алсо, что будет если ввести k = 3?
A = B = C = D = 0
k = 7?
A = 1, B = 2, C = 3, D = 4
Не очень похоже на "сумму от 0 до k", верно?
Аноним 14/10/17 Суб 12:41:26  1075389
>>1075352
A1, B1... не надо помечать как volatile?
Аноним 14/10/17 Суб 12:45:35  1075393
>>1075381
При чем здесь вообще IDE?
Я говорю про синтаксис языка, который должен быть чистым и понятным, даже если он отображается в терминале 20х60 без подсветки синтаксиса.
Аноним 14/10/17 Суб 12:52:58  1075395
>>1075383
И чо? Разные потоки же.
Аноним 14/10/17 Суб 12:55:13  1075396
>>1075387
А зачем мне вводить k = 3, если я могу ввести k = 12? Вопрос был про то почему многопоточность не срабатывает, а не про защиту от дурака.
Аноним 14/10/17 Суб 12:57:29  1075397
>>1075393
Не надо давать уебанские названия переменным и функциям. Программисту в 95% случаях надо понимать смысл происходящего, поэтому там будет не myobject.get(), а auto c = car.get(); c.turnLeft();. Все что надо знать, что у car есть get, а у полученного типа есть turnLeft. В остальных 5% случаев в IDE наведет мышку и посмотрит, какой конкретно тип.
И конечно не надо писать код в терминале.
Аноним 14/10/17 Суб 13:02:27  1075398
>>1075395
Ты школьник? Извини, что уточняю.
У тебя незакрытый кейс в свитче. И потоки разные, а переменные общие, это и есть гонка потоков.
Допустим, второй поток отработал раньше. Он прыгает на case 2 и записывает B1. После чего отрабатывает первый поток. Он прыгает на case 1 и записывает A1 после чего идет дальше по кейсам и перезаписывает B1 этим же числом.
>>1075396
Так ты не делишь последовательность на 4 равных доли, если ты введешь 999 до отработает только до 996.
Аноним 14/10/17 Суб 13:06:40  1075399
>>1075389
Ну это вообще пиздец какая-то экзотика этот volatile. Там и так нечего в этих переменных оптимизировать. Ни в каких проверках они не участвуют. В каждую пишет только свой поток. На всякий случай проверил с volatile - не изменилось ничего.
Аноним 14/10/17 Суб 13:09:57  1075402
>>1075352
pastebin.com - пихни сюда, чотбы я не набирал заново.
Аноним 14/10/17 Суб 13:11:40  1075403
>>1075398
Ты похоже еще более бесполезен, чем я.

1) Первый поток может записать только в переменную А1, потому что при вызове в функцию schet() бай дизайн передается num = 1. Второй поток может писать только в В1 и так далее. Нет там никаких гонок. Это разные кейсы, срабатывающие в разных котоках, в каждом свой.

2) А я не ввожу 999, я ввожу 996. Проблемы?
Аноним 14/10/17 Суб 13:12:49  1075404
>>1075403
>Второй поток может писать только в В1 и так далее.
>Нет break; в конце case
Дебилам не помогаю.
Аноним 14/10/17 Суб 13:13:46  1075405
>>1075397
>Не надо давать уебанские названия переменным и функциям
Это уже называется code style, который строится и зависит от базовых вещей в языке.
Тем более, что меняется от того что ты изменил название переменной в auto c = car.get() ?
Что за тип c? Это поинтер? Это ссылка? Или это копирование? Если копирование то как? Использует ли он COW или копирует весь объект побитово? Перегружен ли там оператор =?
Такой код сразу вызывает пачку вопросов и непонятков.
Если еще васяны пихают авто куда не попадя, дают методам и переменным невнятные имена, то такой код становится не поддающимся расшифровке, который можно смело выкидывать в помойку, ибо сам васян скорее всего забудет что там происходит через пару недель.
Аноним 14/10/17 Суб 13:16:04  1075406
>>1075402
Например https://pastebin.com/BEcj176w
Аноним 14/10/17 Суб 13:17:50  1075407
>>1075405
>Что за тип c? Это поинтер? Это ссылка?
Какая разница? В IDE автокомплит подставит . или ->
>Или это копирование?
Не надо по уебански называть копирование гет-ом.
>Перегружен ли там оператор =?
Какая разница, если ты потом все равно какой то метод вызываешь.
Аноним 14/10/17 Суб 13:22:30  1075411
>>1075407
>Какая разница
>IDE подставит
>Какая разница
Мда, вот оно уже сейчас, поколение быдло-кодеров.
Аноним 14/10/17 Суб 13:23:49  1075415
>>1075404
Бля, сук, точно. Никогда не любил этот ебаный кейс. А ты не так уж плох, как кажешься на первый взгляд. Ладно, спасибо, бустите дальше.
Аноним 14/10/17 Суб 13:28:14  1075418
>>1075411
Чушь не неси, а лучше посмотри какие нибудь слайды с CppCon14-17, никто не пишет std::map<std::wstring, std::map<std::wstring, int>>::iterator когда тебе нахер не сдалось знать, что конкретно там за тип, а тебе просто надо пройтись по нему фор-ичем, то достаточно просто auto и код становится читаемей и понятней, а не наоборот.
Аноним 14/10/17 Суб 13:34:18  1075422
>>1075418
Да че мне эти слайды смотреть, я все равно на с++ уже больше года не пишу и не хочу писать, ибо с++11 был последний гвоздь в крышку гроба.
Так как я по такой залупе вор ичем пройдусь если я даже не знаю что там внутри потмоу что там какая нибудь залупа типа
template<typename T>
void foo(T& val)
{
auto it = val.begin();
...
}

И как мне быть понять, что там за хуйня вообще происходит? И такого говна в с++ проектах обычно навалом.
Аноним 14/10/17 Суб 13:36:24  1075424
>>1075422
Проще взять какой-нибудь нормальный язык у которого все эти вещи из коробки и встроены в дизайн, а не как костылями все в с++.
Аноним 14/10/17 Суб 13:42:02  1075429
>>1075422
И что твой пример изображает? Работаешь с полученным итератором как с любым другим.
Аноним 14/10/17 Суб 13:42:48  1075431
Ушел с c++ в бигдату, хайлоад на джаве, теперь все как у людей, просыпаюсь с приятным предвкушением о хорошем рабочем дне. Чего и вам советую

бывший революционный оп
Аноним 14/10/17 Суб 13:49:52  1075436
>>1075431
Я вот тоже год назад стоял на развилке путей, думал тоже пойти в хайлод, чем я в принципе на с++ занимался, только на яве или scala, ибо доебало это говно в с++ с костылями. Но в итоге решил вкатиться в С и более системное программирование поближе к ядру ОС. Но теперь я бы ни за что не стал бы явистом ибо понимаю какое это дно похуже с++, с кучей макак вкатывальщиков из /b/. А на С в основном пишут крутые парни и обезьян и смузихлебов там вообще нету, ибо не модно и сложно. В общем, мне все нравится.
Аноним 14/10/17 Суб 14:53:30  1075468
>>1075371
>но использование auto скрывает тип и делает код непонятным аля
>auto v = myobject.get();
.get гетает что именно? У большинства STL-функций имена с подсказками, а твой геттер что гетает?

Минус авто только в том, что я не могу его авточлен сделать. Гусары, молчать!
Аноним 14/10/17 Суб 15:05:08  1075477
>>1075468
>Минус авто только в том, что я не могу его авточлен сделать.
В прошлом треде ради лулзов соорудил нечто подобное:

template<class T> class Zalupa {
 T value;
public:
 T get() { return value; }
};
Zalupa<int> lupa;

class A {
 decltype(lupa.get()) a = 1;
};
Аноним 14/10/17 Суб 15:19:10  1075491
>>1075477
Мне тут уже подсказали.
vector<int> V;
decltype(V)::iterator;
Аноним 14/10/17 Суб 16:13:29  1075533
PWORD list;
PIMAGE_BASE_RELOCATION pIBR;

list=(PWORD)(pIBR+1);

Поясните нуфагу, что это за плюс один? Что будет в list?
Аноним 14/10/17 Суб 16:15:35  1075534
>>1075533
Не буду гуглить за тебя, что такой IMAGE_BASE_RELOCATION.
Аноним 14/10/17 Суб 16:16:47  1075537
AlfMgK1.png (4Кб, 453x81)
>>1075534
Аноним 14/10/17 Суб 16:42:38  1075544
>>1074841 (OP)
Объясните, в почему имена структур и типов не мешают друг другу. В каких неймспейсах они находятся? https://ideone.com/5CJXAs

В моем коде при помощи структуры с тэгом complex объявляется тип complex.

Что такое complex в объявлении конструктора?
complex(double re, double im)
: re(re), im(im) {}
Тип или структура?

Что такое complex в объявлении методов?
void complex::swap(complex & other
Аноним 14/10/17 Суб 16:46:18  1075546
>>1075537
pIBR+1 - это указатель на следующую в памяти структуру IMAGE_BASE_RELOCATION.
(PWORD) - это преобразование полученного указателя к указателю на WORD (который джва байта, вроде).

То есть, ты получишь указатель на первые два байта следующей структуры IMAGE_BASE_RELOCATION. Какому наркоману это понадобилось - не знаю.

Про касты можешь прочитать здесь: http://en.cppreference.com/w/cpp/language/explicit_cast
Аноним 14/10/17 Суб 16:49:27  1075548
>>1075546
То есть, на псевдокоде это будет
list=(PWORD) pIBR+sizeof(IMAGE_BASE_RELOCATION);
так?
Если да, то мне все понятно, спасибо.
Аноним 14/10/17 Суб 16:54:51  1075553
>>1075544
Двоеточие - это предлог "в" (только порядок другой). Какждый класс - это простанство имён, к членам которого ты можешь обратиться только через операторы ".", "->" и "::".
class T {
T(){}
}
- это конструктор.

class T {
T();
}

T::T (){}

- это объявление конструктора и объявление его снаружи.

T T::operator=(T rhs){}

- это оператор присвоения, определённый в классе T, принимающий T и возвращающий T.

>>1075548
Грубо говоря - да.
Аноним 14/10/17 Суб 16:55:00  1075554
>>1075544
Пофиг же, не? Это как написать typedef int int. Алсо структура это тоже тип.
Аноним 14/10/17 Суб 16:55:55  1075555
>>1075553
Заговорился.
>- это объявление конструктора и ОПРЕДЕЛЕНИЕ его снаружи.
>- это ОПРЕДЕЛЕНИЕ оператора присвоения, ОБЪЯВЛЕННОГО в классе T, принимающего T и возвращающего T.
Аноним 14/10/17 Суб 17:02:42  1075558
>>1075546
>Какому наркоману это понадобилось - не знаю.
После этой структуры идет массив вордов неопределенной длины. Если вдруг тебе интересно.
Аноним 14/10/17 Суб 17:10:25  1075561
>>1075548
>То есть, на псевдокоде это будет
>list=(PWORD) pIBR+sizeof(IMAGE_BASE_RELOCATION);
>так?
Что такое "на псевдокоде"? Арифметика указателей такая же, как в C++? Тогда не так.
Аноним 14/10/17 Суб 17:11:11  1075562
>>1075554
>Пофиг же, не? Это как написать typedef int int
Тогда зачем нужна идиома typedef struct?
Аноним 14/10/17 Суб 17:13:31  1075564
>>1075389
>A1, B1... не надо помечать как volatile?
Если ты не дебил — нет.
Аноним 14/10/17 Суб 17:13:54  1075565
>>1075561
Если честно я не ебу какая там арифметика. Я хотел сказать что к адресу pIBR прибавляется размер этой структуры, и мы получаем указатель та следующую структуру, как если бы они шли подряд.
Аноним 14/10/17 Суб 17:14:51  1075566
>>1075565
>Я хотел сказать что к адресу pIBR прибавляется размер этой структуры
Тогда пиши
(char*) pIBR+sizeof(IMAGE_BASE_RELOCATION);
Аноним 14/10/17 Суб 17:20:53  1075572
>>1075352
>Так что не так с этим говном?
От скольки до скольки складываешь?
Аноним 14/10/17 Суб 17:25:37  1075573
>>1075352
А, уже увидел, что проблема в case и что её тут решили.

А volatile не добавляй.
Аноним 14/10/17 Суб 17:35:51  1075576
>>1075562
Это про плюсы тред, а не про Си.
Аноним 14/10/17 Суб 18:43:35  1075607
>>1075356
>embedded c++
Зашёл по твоей ссылке, вначале воодушевился, а потом дичь пошла.
> The following language features have been removed:
> <...>
> Exceptions
Серьёзно? Выкинуть исключения? Это просто гениальное "упрощение"
> Templates
Теперь надо под каждый пердёж создавать свой отдельный контейнер? И без смартпоинтеров?
По ссылкам всё мертво, по ссылкам 404, сами ссылки десятилетней давности...
Аноним 14/10/17 Суб 19:07:18  1075610
>>1075352
Че-то какой-то говнокод пиздец.
Во-первых, убери всю эту хуйню с глобальными переменными.
Короче вот пример от профи.

https://pastebin.com/mZfwhfj9
Аноним 14/10/17 Суб 19:30:56  1075623
image.png (26Кб, 755x229)
>>1075610
>пример от профи.
if(threads == -1)
threads = std::thread::hardware_concurrency();
Очень надёжно! Профи видно сразу!
Аноним 14/10/17 Суб 19:34:03  1075624
code.png (30Кб, 677x342)
>>1075610
>vector
>chrono
>mutex
Ну у меня же не было задачи использовать как можно больше библиотек и контейнеров. Я просто хотел посмотреть реально ли работает этот thread и на сколько быстрее с ним идет вычисление, а то во всех обучалках одно говно какое-то с выводом сообщений в двух потоках, когда реально хуй поймешь параллельно они по факту выполняются или нет.
Аноним 14/10/17 Суб 19:34:19  1075625
>>1075623
Ты шо ебонутый? Давай в програмке на коленке рандом хую с двача, все возможные кейсы очень маловероятных ошибок прорабатывать.
Аноним 14/10/17 Суб 19:36:26  1075626
>>1075625
Зачем вообще в parallel_sum что-то проверять? Скажи, что число потоков должно быть от 1. И пусть вызывающий передаёт правильное число, используя /dev/random или hardware_concurrency() и обрабатывая случай нуля как хочет.
Аноним 14/10/17 Суб 19:39:08  1075628
>>1075610
Ну и вообще, у тебя во все треды прилетает одинаковый int* res.
Аноним 14/10/17 Суб 19:40:15  1075629
>>1075610
> THREASHOLD
С engrish тоже в голос.
Аноним 14/10/17 Суб 19:44:02  1075631
>>1075607
Исключения выкинуты, т.к. лишний код, занимает и байты, и время исполнения, причем сами исключения возникают в 0,001%, а код этот работает постоянно. На встройке это критично. С шаблонами похожая проблема, ты напишешь один раз а компилятор его 100 раз размножит для разных типов, и программа опять не влезет никуда.
Аноним 14/10/17 Суб 19:45:50  1075634
>>1075624
А зря. Хроно это маст хэв, вектор тем более.
Аноним 14/10/17 Суб 19:47:04  1075635
>>1075626
Так там число потоков опциональный аргумент, и если он опущен, то в функцию передается -1 и вызывается hardware_concurrency() Я думаю не существует имплементаций где он может вернуть 0. Конечно если у него линукс, можно было вызвать get_nprocs(), но у него то винда.

>>1075624
Использовал только самое необходимое.
vector - чтоб динамически алокейтить место под массив.
chrono - перформанс таймер.
mutex - чтоб отпечатать нормально в потоках.

Вообще, конечно создавать потоки на лету, плохая идея в реальной жизни так никто не делает, ибо это оверхед большой. Обычно, потоки создаются один раз и потом используются.
Аноним 14/10/17 Суб 19:48:38  1075638
>>1075635
>Так там число потоков опциональный аргумент, и если он опущен, то в функцию передается -1
Чёт не вижу, что там есть значение по-умолчанию.
Аноним 14/10/17 Суб 19:50:15  1075639
>>1075628
Да тут обосрался. Надо атомарным его сделать.

>>1075629
лол, нашел до чег доебаться.
Аноним 14/10/17 Суб 19:51:39  1075640
>>1075638
Так
int threads = -1;
в main
Аноним 14/10/17 Суб 19:52:02  1075641
>>1075610
>Короче вот пример от профи.
Ой-вей. Ты сначала зачем-то заполняешь числами массив, а потом суммируешь его.
Просто 13/10.
Аноним 14/10/17 Суб 19:54:01  1075642
>>1075640
Рассказываю "профи", что такое "опциональный аргумент":
static void parallel_sum(int a[], int size, int res, int threads = std::thread::hardware_concurrency());

static void parallel_sum(int a[], int size, int
res, int threads)
{
if (threads == 0) threads = 1;
.....
}

Теперь threads — это опциональный аргумент. И если его не передавать, то там будет std::thread::hardware_concurrency()
Аноним 14/10/17 Суб 19:54:24  1075643
>>1075641
Лол. Ты вообще читал, пост а который я ответил? Я лишь переделал программу автора, где он разбирается в потоках.
Аноним 14/10/17 Суб 19:55:22  1075644
>>1075643
Читал. Там вроде просто числа суммиоровались, которые генерируются при суммировании.
А зачем их сначала писать в массив, а потом читать оттуда?
Аноним 14/10/17 Суб 19:55:38  1075645
>>1075642
Бля, а как ты будешь вызывать функцию эту, если аргумент приходит из командной строки?
Аноним 14/10/17 Суб 19:56:24  1075646
>>1075644
>числа суммиоровались, которые генерируются при суммировании
Это как?
Аноним 14/10/17 Суб 19:58:28  1075648
>>1075646
https://pastebin.com/BEcj176w строка 12
А твоё однопоточное заполнение массива занимает в несколько раз больше времени, чем, собственно, суммирование.
Аноним 14/10/17 Суб 20:00:29  1075649
>>1075648
Ну ты пиздец. Смысл программы в функции parallel_sum а не в том что происходит до.
Аноним 14/10/17 Суб 20:01:52  1075654
>>1075649
Смысл программы в многопоточном суммировании последовательных чисел.
А не в том, как сделать это как можно тормознее.
Аноним 14/10/17 Суб 20:04:26  1075656
>>1075654
>Смысл программы в многопоточном суммировании последовательных чисел.
Так она именно это и делает.
Аноним 14/10/17 Суб 20:05:57  1075657
>>1075656
Она делает как быстрее. А ты — как можно медленнее.
Ты бы ещё в файл сначала записал числа, а потом считывал оттуда.
Аноним 14/10/17 Суб 20:08:39  1075658
>>1075657
Ты ебанутый? Какая разница откуда числа приходят, когда смысл суммировании массива с числами?
Аноним 14/10/17 Суб 20:09:54  1075659
>>1075658
>смысл суммировании массива с числами
Последовательности чисел.
Аноним 14/10/17 Суб 20:10:14  1075660
>>1075654
Тогда надо сразу на шаблонах, чтобы посчиталось в компайл тайме и выдало константу.
Аноним 14/10/17 Суб 20:10:55  1075661
>>1075660
Кому надо?
Аноним 14/10/17 Суб 20:12:36  1075662
>>1075659
Для монотонной последовательности не нужны вообще циклы и потоки, это считается одной формулой.
Аноним 14/10/17 Суб 20:18:30  1075666
>>1075661
Тому, кто топит, что его вариант быстрее других.
Аноним 14/10/17 Суб 20:19:02  1075667
image.png (0Кб, 42x53)
>>1075662
>Для монотонной последовательности не нужны вообще циклы и потоки, это считается одной формулой.

Ага. Формулу прикрепляю картинкой.

Или ты имеешь в виду формулу без знаков "сумма" и т.д. (только с элементарными функциями?)? Готов для любой монотонной последовательности предъявить формулу суммы начального отрезка этой последовательности?
Аноним 14/10/17 Суб 20:22:52  1075668
>>1075631
Ты уж согласись тогда, что это не с читаемостью кода связано, а с ограничениями железа.
Аноним 14/10/17 Суб 20:32:56  1075671
.jpg (4Кб, 152x40)
>>1075667
Она же простая.
Аноним 14/10/17 Суб 20:33:37  1075672
>>1075671
Ты, видимо, не в курсе, что такое монотонная последовательность.
Аноним 14/10/17 Суб 20:36:11  1075676
>>1075624
>и на сколько быстрее с ним идет вычисление
Ты вообще ослоёб? Если тебе быстро сложить надо, делай примерно так:
std::vector x;
// Fill x
auto result = cblas_dsum(x.size(), x.data(), 1);
cblas_dsum замени на функцию из твоей любимой математической библиотеки.
Аноним 14/10/17 Суб 20:37:30  1075679
>>1075672
А, да, с прогрессией перепутал.
Аноним 14/10/17 Суб 20:40:49  1075680
Посоны, есть ли какая-то возможность получать стектрейсы в релиз билдах, при условии что для этого билда есть map/pdb файлы?
Меня просто смущает то что по идее ведь если у нас программа состоит из кучи либ, каждая либа будет загружена в рандомное место в адрессспейсе, и как в таком случае привязывается return адресс к чему-то в мапфайле?
Аноним 14/10/17 Суб 20:46:29  1075682
double x;
for (x = 0.10; x <= 1; x + 0.09)
{ ... }
цикл зацикливается до бесконечности, чому?
Аноним 14/10/17 Суб 20:48:10  1075683
>>1075682
Потому-что x + 0.09 не увеличивает x
тебе нужно x+=0.09
Аноним 14/10/17 Суб 21:00:09  1075687
>>1075683
ну я и даун, спасибо
Аноним 15/10/17 Вск 01:30:12  1075784
При работе с std::cin, можно ли считать его таким же по свойствам, как поток типа std::ifstream, создаваемый по какому-либо файлу?
Аноним 15/10/17 Вск 01:37:46  1075786
>>1075784
http://eel.is/c++draft/iostream.objects#narrow.stream.objects-2
Аноним 15/10/17 Вск 01:49:36  1075791
>>1075680
Чем дебуг-версия отличается, по-твоему?

Стектрейсы в релизе? Да запросто, но ты забыл про злоебучие оптимизации, которые могут заинлайнить или перемещать вызовы, при чём не все.
>>1075784
Можно. КРОМЕ того, что:
- в cin может прилететь feof не один раз. Т.е.: читаешь, юзер нажал Ctrl+D (или что там в твоей ОС), прилетел EOF, ты сбрасываешь состояние cin и можешь читать до следующего EOFa. С файлами может быть то же самое, если он не в одной программе открыт, наверное
- производительность cin/cout/... никакующая, если не отключить синхронизацию с stdin/stdout/...
Аноним 15/10/17 Вск 01:50:45  1075792
>>1075784
А, и ЕЩЁ: cin по-умолчанию текстовый, и изменить это ты можешь только с помощью freopen.
Аноним 15/10/17 Вск 03:56:04  1075835
>>1075099
Лан, вот тебе код. https://pastebin.com/UTK4PwEs
Там много всего захардкожено, но молодые-шутливые с лёгкостью перепишут так, чтобы исходные данные можно было задавать с помощью конфига на JSON.
Для компиляции нужна header-only однофайловая библиотека exprtk https://github.com/ArashPartow/exprtk

exprtk.hpp весит полтора мегабайта, так что компилится этот код минуту-полторы. Зато работает быстро. Без оптимизаций находит все решения за 0.5 сек, с оптимизациями — за 0.01 сек.
Аноним 15/10/17 Вск 08:14:53  1075873
15079633053242.jpg (628Кб, 850x1201)
>>1074841 (OP)
Про FAQ. Почему Липман, а не Прата или Лафоре? Или, в конце-концов, не Шилдт? Ладно, страус сложный, но щит проще их всех, да и примеры охуительно наглядные. Ну и да, все эти прекрасные книжки не рассказывают о boost, qt и прочем, а об STL - обзорно (для сравнения, тот же Шилдт в книжке о Джаве рассматривает АВТ, Свинг, Сервлеты...). При этом книжки непомерно большие, а хочется чего-то вроде кьюик старт гайда (С++ за 24 часа здорового человека, если проще). Что скажете, что посоветуете? Язык менять не хочется, ибо нужна универсальность и низкое потребление ресурсов. Джава и шарп тянут за собой свои говна, пайтон и жс тянут за собой свои интерпретаторы + они медленные даже для типовых приложений, а все остальные языки на десктопе мало кому всрались, неуниверсально.
Аноним 15/10/17 Вск 09:11:53  1075885
>>1075873
Если тебе нужно что-то высокопроизводительное, то бери С++. У липпмана одна из самых лучших книг по крестам, остальные - говно, рассчитанное на абсолютных ньюфагов.
А если тебе просто надо делать десктопные приложения, то учи js и electron, сейчас гуи туда движется.
Аноним 15/10/17 Вск 10:31:13  1075914
>>1075885
Можешь объяснить, почему остальное - говно?
Нет, анон, мне не нужна какая-то особенная производительность, но я хочу
>просто
писать приложения, это правда, но чтобы при этом это были приложения как винамп - охуенный, лучший в истории аудиоплеер с моментально отзывчивым интерфейсом, моментальным же запуском, всем необходимым, и при этом весящий в памяти 3 мегабайта, не пытающийся подтянуть за собой пол-хрома. Или вот как нотпад++ - охуенный, фичастый эдитор текста, (если) уступающий (да и то, за счет плагинов) только всяким эклипсам и сублаймам, но весящий в разы меньше и работающий на порядки быстрее перечисленных. И уж тем более, меньше весящий и быстрее работающий в сравнении с брэкетсами-атомами.жс. Что-то вот такое мне нужно. Я не собираюсь писать браузеры, фотошопы и подобную хуйню, моя цель - маленькие, быстро и просто (да, знаю, это не совсем про цпп) разрабатываемые приложения, которые не только выглядят, но и работают хорошо (без тормозов, без запуска длиной в 20 секунд, без пожирания 200 метров оперативки на хеллоуворлд, без нетфреймворков, электронов и jre). Поэтому я думал в сторону С++ (не хардкорного, база, основа) + Qt или подобный фреймворк. Что скажешь, няша?
Аноним 15/10/17 Вск 10:50:47  1075921
Подскажите, как в C++98 делали списочную инициализация вектора?
std::vector<int> example{1, 2, 3, 4, 5};
Аноним 15/10/17 Вск 10:59:12  1075924
>>1075921
Никак. Можешь объявить массив и инициализировать им.
Аноним 15/10/17 Вск 11:00:31  1075925
>>1075924
Да, я уже понял, жаль мне олдфагов.
Аноним 15/10/17 Вск 11:32:20  1075936
Надо сделать однообразную замену символов в последовательности, полученной из входного потока.

Но памяти мало, и считывать в вектор, который потом предполагается обработать, не хочется.
Подскажите, получится ли работать с неким входным потоком с помощью std::istream_iterator? Или здесь только решение вида "достать (getchar) символ, если он из тех, что надо заменить, закинуть (putback) во входной поток замененный символ"?

И какое (линейное/постоянное) время может занять unget символа?
Аноним 15/10/17 Вск 11:53:59  1075943
>>1075925
жаль мне ньюфань в с++. Вангую через лет 5 с++ будет медленее и в 50 раз более громоздким чем та же ява. Ну а потом когда встроят туда JS и электрон прикрутят, вообще будет охуенчик.
Аноним 15/10/17 Вск 11:56:14  1075947
>>1075943
Ну тебе же ничего не мешает не использовать эти списки инициализации, можешь хоть на голом C писать с ассемблерными вставками в отличии от явы, в чём проблема?
Аноним 15/10/17 Вск 12:02:38  1075950
>>1075943
>>1075947
И да, списки инициализации наоборот является ускорением, а через 5 лет будет стандарт C++20, в основном что там будет известно уже сейчас, с тебя хуёвая как ванга, так и программист.
helplease Аноним 15/10/17 Вск 13:46:28  1076036
Короче. Есть окно, которое создано с помощью SFML либы.
Нужно прикрутить к этому окну drag and drop. То есть. У меня на рабочем столе лежит какой нибудь файл. Я его перетаскиваю мышкой в окно и получаю путь к нему. Гуглить пытался. Ничего не нашёл. Вообще как в шиндовс такое сделать?
Аноним 15/10/17 Вск 13:55:24  1076042
>>1076036
Вот как это делается на Winapi:
https://stackoverflow.com/questions/2263586/how-to-get-path-of-file-dragged-into-win32-app-and-delete-it
Как это делать на SFML я не знаю, у них и спрашивай, раньше я тоже использовал SFML, но бросил его, у меня свой велосипед.
Аноним 15/10/17 Вск 14:09:51  1076059
>>1075947
>>1075950
>Пук
Аноним 15/10/17 Вск 14:12:26  1076061
>>1074841 (OP)
Какой учебник лучше взять ньюфегу. Если что, я оче хорошо понимаю, когда в книге есть упражнения.
В факе рекомендуют эти:
Бьерн Страуструп Программирование. Принципы и практика использования C++
Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++
Стивен Прата Язык программирования C++
Аноним 15/10/17 Вск 14:14:51  1076064
>>1076042
Эх. Придётся всё таки юзать winAPI. Хорошо что хоть SFML может handle окна и объектов ядра отдавать. А то бы вообще горе было.
Аноним 15/10/17 Вск 14:16:00  1076067
>>1076059
Школьник, ты тред перепутал, тебе сюда >>1067944 (OP)
Аноним 15/10/17 Вск 14:17:21  1076069
Страуструп язык программирования с++ самое свежее издание.
Ещё можешь глянуть
https://www.slideshare.net/olvemaudal/deep-c/13-What_will_happen_if_you
И
https://www.slideshare.net/adankevich/c11-15621074
и вообще по 14 стандарту поищи чего там же
Аноним 15/10/17 Вск 14:57:28  1076085
>>1076061
Да.
Аноним 15/10/17 Вск 14:57:33  1076086
Screenshot from[...].png (93Кб, 695x950)
>>1076067
Пади падмойся маня
helplease Аноним 15/10/17 Вск 16:21:06  1076132
>>1076042
https://ideone.com/vbRXUr
Хули оно не драг анд дропается?
Аноним 15/10/17 Вск 16:42:47  1076141
>>1076132
Короче как я понимаю в чём моя проблема. У созданного sfml окна есть свой обработчик коллбеков. Мне нужно как-то сделать так, чтобы перехваченное сообщение передавалось в функцию обработчик этого окна и в дополнении к этому нужно изменить эту функцию, чтобы она обрабатывала WM_DROPFILES сообщения.
Как сделать-то это?
Аноним 15/10/17 Вск 16:43:25  1076142
>>1075921
Да никак! Пушили из константного массива.
http://en.cppreference.com/w/cpp/container/vector/vector - почти все конструкторы в 11+, а аггегатом вектор не является.
>>1075936
В каком виде нужен результат? Сделай свой класс, наследник basic_streambuf:
http://en.cppreference.com/w/cpp/io/basic_streambuf
внутри этого класса будешь манипулировать данными.
Сделанный буфер можешь подсунуть в другой поток: http://en.cppreference.com/w/cpp/io/basic_ios/rdbuf
http://en.cppreference.com/w/cpp/io/basic_istream
>Но памяти мало, и считывать в вектор, который потом предполагается обработать, не хочется.
>Подскажите, получится ли работать с неким входным потоком с помощью std::istream_iterator?
Типа, если пихать всё обратно, память не расходуется?
>std::istream_iterator is a single-pass input iterator that reads successive objects of type T from the std::basic_istream object for which it was constructed, by calling the appropriate operator>>.
>>1075943
Типа, конст-массив память не занимает, а списки инициализации - занимают. Так надо понять тебя?
Аноним 15/10/17 Вск 16:48:35  1076144
>>1076141
А всё. Понял. Можно winAPI окно описать, а потом его хендел передать как параметр при создании SFML окна. Типа
sf::RenderWindow SFML_window(winAPI_window);
Аноним 15/10/17 Вск 17:07:21  1076157
АААА ищу современный годный учебник программирования с Win32 API на C++, чтобы прямо для даунов с примерами кода. Такой существует?
Аноним 15/10/17 Вск 17:12:44  1076160
>>1076157
Нет, а нахуй надо? И так всё понятно/
Аноним 15/10/17 Вск 17:19:56  1076163
>>1076157
Есть grey hat, то там python.
Аноним 15/10/17 Вск 18:08:46  1076192
Двач подскажите книгу по C++ для продвинутых, желательно с уклоном в ООП.
Аноним 15/10/17 Вск 18:15:50  1076196
>>1076086
Интел ему интринсики дали, а нет, хочу ассемблер жрать. На самом деле я не стараюсь оскорбить тебя, мне просто интересно, много ли смысла писать на ассемблере, когда есть интринсики.
Аноним 15/10/17 Вск 18:33:39  1076203
>>1076196
Когда сложность О(n^3) то одна лишняя инструкция может замедлить общую скорость на 10-20%, а доверяться компилятору на то что он там соптимизирует хорошо, не вариант, ибо я сначала на интрисиктах сделал, но посмотрев выхлом gcc решил переделать все сам.
Аноним 15/10/17 Вск 19:06:06  1076231
>>1076203
Сто пудов даже бенчмарк не гонял, человек-ассемблер.
Аноним 15/10/17 Вск 19:19:50  1076236
>>1076231
Ну да тебе виднее там за стойлом с пхп. Тут же все идоты сидят, не то что ты, умничка от как наверстываешь пхпешку от как молодца, и ява скриптик не забудь подправить.
Аноним 15/10/17 Вск 19:22:12  1076239
>>1076086
Свинья
Аноним 15/10/17 Вск 19:24:43  1076241
Тут правда сидят одни свиньи, да?
Аноним 15/10/17 Вск 20:32:35  1076269
Смотрите че есть
https://cpp-school.unigine.com/#video-lectures
Аноним 15/10/17 Вск 20:51:40  1076282
Если кому интересно как прикрутить drag and drop к SFML окнам. То
1. Получаешь хендел окна SFML с помощью getSystemHandle()
2. Разрешаешь ему drag and drop с помощью DragAcceptFiles
3. пишешь свою функцию обработчик, которая LRESULT CALLBACK
4. Сохраняешь старую функцию обработчик этого окна и подменяешь её своей с помощью SetWindowLongPtr. Пример:
WNDPROC pOldProc = (WNDPROC)(SetWindowLongPtr(window.getSystemHandle(), GWLP_WNDPROC, (LONG_PTR)myWindowProc));
5. При обработке сообщений если это сообщение WM_DROPFILES делаешь всё что тебя надо и выходишь. Если не WM_DROPFILES, то прыгаешь на старую функцию обработчик с помощью CallWindowProc
6...
7. Профит.
Аноним 15/10/17 Вск 20:58:31  1076284
>>1076282
Госпади да все насрать
Принес какое-то парашу под винду.
Аноним 15/10/17 Вск 21:40:10  1076310
>>1075914
>почему остальное - говно?
Я, видимо, неправильно высказался. Для ньюфагов шилдт и прата, может быть, лучше липпмана. Но если у тебя уже есть опыт в программировании, то может есть смысл взять книгу для более продвинутых?
>Что скажешь, няша?
Вроде все хорошо
Но кому нужны в 2017 простые десктопные приложения? Сложные приложения, которые требуют высокой производительности остаются на десктопе, все простое уезжает в веб.
Аноним 15/10/17 Вск 22:14:16  1076324
>>1076310
Слушай, для ньюфага норм начинать со Страуструпа?
Аноним 16/10/17 Пнд 02:00:59  1076446
>>1076324
Как по мне он сложный для ньюфага.
Аноним 16/10/17 Пнд 02:25:41  1076448
2ch, почему g++ позволяет создавать массив переменной длинны.
Аноним 16/10/17 Пнд 04:48:42  1076466
>>1076448
-pedantic -std=c++98 (или другого года) уже включил?
Ты про
int a=5;
int b[a];
? Это только в Си и в расширениях языка.
Аноним 16/10/17 Пнд 06:30:22  1076471
>>1076310
>Для ньюфагов шилдт и прата, может быть, лучше липпмана.
Я не совсем ньюфаг, но у Шилдта таки очень много воды для тех, кто не знает про условия и циклы, а тот же STL очень обзорно разбирается, фактически рерайт документации. Прата жирен, но там куча наглядных примеров. Липпман таки лучше по итогу, после него будешь лучше шарить, чем осилив 1.5к страниц Праты?
>Но кому нужны в 2017 простые десктопные приложения? Сложные приложения, которые требуют высокой производительности остаются на десктопе, все простое уезжает в веб.
Не всем по кайфу пользоваться всем простым за 19.5 евро в месяц, да еще и при необходимости держать запущенным интернет.
>>1075873
Бамп
Аноним 16/10/17 Пнд 07:05:52  1076474
>>1075431
Пили стори. Мне вот Джава всегда представлялась лютейшим говном. Сейчас я в 2017 сижу на Эклипсе написанном на джаве и бугуртю от каждого её движения.
А вот представить её в хайлоаде - я вообще не могу. Онаж сама 90% хайлоада и сожрёт своим выполнением. Развей мои сомнения или заблуждения.
Аноним 16/10/17 Пнд 10:58:49  1076524
Нафаня-вопрос.

Сумма цифр числа.
В цикле с предусловием все понятно (прилеплено ниже).
Как то же самое только с постусловием замутить? (do while)
Чому у меня он тупа последнюю цифру числа вываливает?

void main()
{
int a, s;
cin >> a;
s = 0;
while (a > 0)
{
s += (a % 10);
a /= 10;
}
cout << s << endl;
}
Аноним 16/10/17 Пнд 11:07:06  1076526
>>1076524
Сорян, ошибку понял.
Писал по аналогии с паскалевским repeat until.
Немножко каша в голове.
Они ведь не идентичны.
Аноним 16/10/17 Пнд 12:54:01  1076554
>>1076524
Не могу понять, где ты мог ошибиться, ведь while от dowhile отличается ровно одним - гарантией выполнения одного шага. Результат твоей программе от замены while на dowhile с таким же условием не зависит НИКАК.
Аноним 16/10/17 Пнд 16:39:53  1076668
maxresdefault ([...].jpg (48Кб, 1280x720)
Доброго ранку. Ситуация следующая.

Есть функция, которая принимает вектор по ссылке:

inline void getObjectsFromFile(vector<computer> &vecComp)
{
vector<NetInfo> vecNetInfo;
computer Comp;
NetInfo C;

ifstream fin("networkinfo.txt");
streamsize nameLength = 18, IPLength = 17, MACLength = 13;
C.Name = new char[18];
C.IP_address = new char[17];

int i = 0;
while (1)
{

vecNetInfo.push_back(C);
fin.getline(vecNetInfo.Name, nameLength, '\t');
fin.getline(vecNetInfo.IP_address, IPLength, '\t');
fin.getline(vecNetInfo.MAC_address, MACLength, '\n');

vecComp.push_back(Comp);
vecComp.Info = vecNetInfo;

showComputerInfo(vecComp);

if (fin.fail())
break;
i++;
}
fin.close();

for (int i = 0; i < vecComp.size(); i++)
{
showComputerInfo(vecComp);
}
}

структура NetInfo объявлена вот так:

struct NetInfo
{
char IP_address;
char MAC_address[13];
char
Name;
};
она же является полем класса computer.

Функция возвращает вектор computer'ов. Но у них сохраняется только поле MAC_address. А остальные - хранятся во время выполнения функции. Но не сохраняются при выходе из неё.
Что я делаю не так?
Аноним 16/10/17 Пнд 16:50:39  1076680
>>1076668
О, заебок. Сам всё починил.
Просто в цикле выделять память надо было:
vecNetInfo.push_back(C);
vecNetInfo.IP_address = new char[17];
vecNetInfo.Name = new char[18];
Аноним 16/10/17 Пнд 16:56:22  1076683
Кто-нибудь юзал C++ AMP? Как вообще по сравнению с OpenCL/CUDA? На Azure запускали?
Аноним 16/10/17 Пнд 17:39:13  1076713
>>1076683
Мне кажется, что по производительности будет что-то наравне с вычислительными шейдерами OpenGL только без лишних ебот. А на деле получается что CUDA будет нагибать и первое и второе (причем, судя по всему, OpenCL на NVidia карточках работает так себе, у них CUDA в приоритете).
Все, что не CUDA нахуй не нужно, убедился давно сам, а эти OpenCL - выебоны для нищуков.
Аноним 16/10/17 Пнд 18:28:14  1076732
>>1076668
thanks bro, pobleval. worst C++ code I've ever seen
Аноним 16/10/17 Пнд 18:51:33  1076745
image.png (784Кб, 800x1201)
Хелпаните аутисту

Хочу прочитать весь список. Имеются структуры

struct structure
{
std::string album;
std::string singer;
int date;
int songs;
structure next;
};
struct dyn_list {
structure
head;
structure* tail;
};


Как мне грамотно оформить функцию, в которой я вывожу все структуры(весь список) через рекурсию(можно и не через неё)?

void CASE2(dyn_list l) // вот тут неправильно
{
while (l.head != NULL)
{
std::cout << "Album name:" << l.head->album << std::endl;
std::cout << "Singer:" << l.head->singer << std::endl;
std::cout << "Release date:" << l.head->date << std::endl;
std::cout << "Number of songs:" << l.head->songs << std::endl;
CASE2(l.head->next); // вот тут неправильно
}
return;
}

Аноним 16/10/17 Пнд 18:55:18  1076748
>>1076713
Ты дебил? CUDA не работает на АМД карточках и никаких других. И если ты не пишешь какие-то специальное приложение, которые пишется специально под нвидиа карточки, то используя CUDA ты теряешь половину потребителей твоего приложения.
Это все равно что писать кроссплатформенные игры на Direct3D.
Все нормальные люди используют OpenCL и OpenGL.
Аноним 16/10/17 Пнд 18:55:50  1076749
>>1076745
сука код поехал по пизде.... ща пофикшу....


struct structure
{
std::string album;
std::string singer;
int date;
int songs;
structure next;
};

struct dyn_list
{
structure
head;
structure* tail;
};



void CASE2(dyn_list l) // вот тут неправильно
{
while (l.head != NULL)
{
std::cout << "Album name:" << l.head->album << std::endl;
std::cout << "Singer:" << l.head->singer << std::endl;
std::cout << "Release date:" << l.head->date << std::endl;
std::cout << "Number of songs:" << l.head->songs << std::endl;
CASE2(l.head->next); // вот тут неправильно
}
return;
}
Аноним 16/10/17 Пнд 18:58:21  1076753
>>1076749
Бля забаньте это имбициала, засирающего тред своей парашей, который даже не додумался использовать pastebin или подобное, что свое говно запостить. Пиздец. Репорт.
Аноним 16/10/17 Пнд 18:59:38  1076756
.jpg (13Кб, 200x382)
>>1076680
>vector.push_back
>new char[17]
Аноним 16/10/17 Пнд 22:18:48  1076886
>>1076749
Свинья, блять, просто свинья
Аноним 16/10/17 Пнд 23:25:44  1076915
>>1076732
Вам не понять
>>1076756
Хули непонятного? Добавляю элемент в вектор, а потом выделяю память для полей структуры
Аноним 16/10/17 Пнд 23:44:08  1076920
>>1076915
Непонятно зачем комбинировать нормальные приемы и говно мамонта.
Аноним 17/10/17 Втр 00:18:26  1076936
>>1076920
Вектор я использую, чтобы передать массив объектов класса в функцию. А в структуре NetInfo у меня char-указатели, потомучто я использую некоторые функции winapi, которые принимают именно char. И ещё им надо выделять память через new, иначе getline() ничего в них не запишет.
Конечно, я бы мог объявить вектора символов вместо char
, но тогда придётся ВСЮ прогу переписывать.
Аноним 17/10/17 Втр 11:48:18  1077088
Какой же я грязный прогер, от меня воняет, волосы комок сала, в душе не был уже 2 месяца, из дома не выхожу только в макдональдс через дорогу, в квартире просто свалка из мусора, мусор прям выкидываю на пол, кот зассал весь коридор и мне похуй воняет пиздец но мыть лень ибо прогаю 24/7. Что делать то?
Аноним 17/10/17 Втр 17:01:44  1077197
>>1077088
Если бы я был твоим сожителем, я бы сгрёб весь мусор к тебе на кровать и на клавиатуру. Можешь сделать так же и посмотреть на эффект. Мотивации для сохранения чистоты в доме и сохранения в чистоте себя, кроме общения с другими людьми, быть не может. Раз ты ни с кем лично не общаешься, она тебе и не нужна. Ещё могут завестить тараканчики, но они няши, хоть и бегают везде, пока ты их не видишь.
Аноним 18/10/17 Срд 07:22:22  1077475
>>1076554
Я делал по аналогии с repeat-until из паскаля.
Типа, там условия менять нужно.
А как оказалось на крестах эти циклы отличаются только одним проходом, как ты и сказал.
Аноним 18/10/17 Срд 07:53:42  1077477
Стикер (0Кб, 512x512)
>>1077197
>Если бы я был твоим сожителем
Да какие там у него сожители...
Аноним 18/10/17 Срд 08:14:12  1077479
Эээ, чего как малолюдно в треде-то?
Аноним 18/10/17 Срд 12:00:58  1077529
ананасы поясните по хардкору, а лучше ткните носом в книжку или умную статью.

Не могу для себя разобраться, в каких ситуациях уместно использовать обычное объявление переменных а в каких через оператор new. немного подучил плюсы, и теперь почитываю исходные коды различные. во всех случуаях можно сделать оба типа объявлений. Но вот тонкость эту понять не могу.
Аноним 18/10/17 Срд 12:27:11  1077554
>>1075062
Если там нет хотяб tesla p100 для вычислений на половинной точности, то хвалится нечем. Поставь хоть 1080, чтоб vgg-16 на нормальной пачке влезал.
Аноним 18/10/17 Срд 13:08:03  1077578
>>1076748
>> половину потребителей
Кек, о каких приложениях речь, маня? Адобе алтер эффектс, конвертеры или еще что - это ширпотреб. Определенно, там есть своя аудитория потребителей.
Есть множество специализированных приложений, которые узко ориентированы на CUDA (те же нейроночки для спецзадач и прочее), потому что людям нахуй не уперлось доплачивать за энергонеэффективное говно и за разработку для этого мусора.
Аноним 18/10/17 Срд 13:49:09  1077595
>>1077529
New - это оператор динамического выделения памяти. То есть с помощью него ты просто резервируешь место в памяти.
Для начала покури указатели и ссылки.
Аноним 18/10/17 Срд 14:03:19  1077599
>>1077595
Нихуя, вместе с new вызывается и конструктор, а ещё бывает placement new.
>>1077529
new нужен или необходим тебе как минимум в четырёх случаях:
- ты пишешь программу для интерфейса, который принимает ссылки на динамические объекты (и потом сам разрушает их)
- тебе нужно сделать большой объект, который на стек не поместится (std::array, например)
- placement new
- тебе нужно сделать smart-указатель (но и здесь можно обойтись без new)
Если твой случай не такой, можешь смело НЕ использовать new, он тебе с вероятностью 99,9999% не нужен.
Аноним 18/10/17 Срд 14:14:56  1077604
>>1077599
Он вообще спросил как с помощью new переменные ОБЪЯВЛЯТЬ. Наверняка это ньюфаг, а ты ему про интерфейсы, дин. объекты и smart-указатели заливаешь.
Аноним 18/10/17 Срд 15:04:39  1077623
>>1077604
Более-менее очевидно то, что ньюфренд говорит о
T ЗВЁЗДОЧКА t=new T();
Он читаетт чужой код и попросил пояснить, я пояснил.
>>1077529
Олсо, есть другие редкие случаи, связанные с ООП.
Аноним 18/10/17 Срд 15:05:38  1077624
>>1074849
Какой же классный у этой станции рейд массив!
Аноним 18/10/17 Срд 15:17:44  1077630
>>1077623
Держу пари, он говорил о
T *t = new T;
Аноним 18/10/17 Срд 15:31:56  1077635
Ответьте на вопросы про формальную верификацию, аноны:
https://2ch.hk/pr/res/1077629.html
Аноним 18/10/17 Срд 15:39:11  1077638
>>1077635
>выучил новое слово
Аноним 18/10/17 Срд 16:29:32  1077683
>>1077630
Оба варианта правильны для конструкторов без параметров.
Аноним 18/10/17 Срд 17:49:23  1077730
Двач, в одном месте пишется что map\set являются бинарными деревьями поиска, в другом то что красно-чёрными деревьями, что из этого верно? И чем являются контейнеры multimap\multiset?
Аноним 18/10/17 Срд 18:21:23  1077742
>>1077730
>в одном месте пишется что map\set являются бинарными деревьями поиска, в другом то что красно-чёрными деревьями, что из этого верно?
Красно-чёрные деревья это вид двоичных деревьев поиска.
Аноним 18/10/17 Срд 18:28:27  1077746
>>1077742
Хорошо, а что с этим >И чем являются контейнеры multimap\multiset?
Аноним 18/10/17 Срд 18:29:09  1077747
>>1077746
Скорее всего тем же, просто вместо значений в дереве хранятся списки значений.
Аноним 18/10/17 Срд 19:23:54  1077766
>>1077747
Может быть и в точности тем же деревом, только со стабильным алгоритмом сортировки.
Аноним 18/10/17 Срд 22:45:55  1077856
Есть какой-нибудь велосипед для преобразования шестнадцатеричной строки в байты?
Аноним 18/10/17 Срд 22:51:18  1077860
Антуаны, прошу вашей помощи
Хочу сделать обёрту для вызовов java кода из с++
сейчас ипусь с CMakeLists.txt ибо плюсы использовал раньше только ради лаб в унике

пока имею такое дерьмицо, которое ессесно не работает
https://pastebin.com/9UL2AdHQ

2 цистерны чая тому, кто поможет
Аноним 18/10/17 Срд 23:00:13  1077867
>>1077860
Слишком мало информации, чтобы помочь. Показывай ошибку, рассказывай про операционку, куда что установлено и.т.п.
Аноним 18/10/17 Срд 23:17:54  1077875
>>1077867
Операционка linux mint 18.2
ide clion
JAVA_HOME=/opt/jdk-1-8/jdk1.8.0_141

ошибка
/test-cpp-jni/wrapper/WrapperJNI.cpp:6:17: fatal error: jni.h: Нет такого файла или каталога
compilation terminated.
CMakeFiles/test_cpp_jni.dir/build.make:86: ошибка выполнения рецепта для цели «CMakeFiles/test_cpp_jni.dir/wrapper/WrapperJNI.cpp.o»
Аноним 18/10/17 Срд 23:57:06  1077895
image.png (132Кб, 1147x844)
>>1075352
//мимопроходил
Аноним 19/10/17 Чтв 00:30:52  1077907
>>1077875
Покажи кеш CMAKE
Аноним 19/10/17 Чтв 00:34:53  1077909
>>1077907
https://pastebin.com/4fBwY2yG
Аноним 19/10/17 Чтв 00:48:40  1077914
>>1077856
В бусте разве что. Если строка с пробелами можно использовать
http://en.cppreference.com/w/cpp/header/iomanip
но всё равно цикл будет.
>>1077875
Ясен хуй, ошибка в исходнике. Имя включаемого файла, лежащего рядом с исходником, должно быть в кавычках, а не в угловых.
Аноним 19/10/17 Чтв 01:04:49  1077919
>>1077914
не работае и в кавычках, товарищ
Cannot find jni.h
Аноним 19/10/17 Чтв 01:06:05  1077920
>>1077914
да и он же не лежит рядом с исходником, разве не?
я не копировал его в папку проекта, я пытаюсь его из JAVA_HOME/include подгрузить
Аноним 19/10/17 Чтв 02:08:43  1077946
>>1077895
i <= CONFIG_THREAD_COUNT
Аноним 19/10/17 Чтв 02:14:21  1077948
>>1077860
https://stackoverflow.com/a/7716814/8686134
Аноним 19/10/17 Чтв 02:53:09  1077954
>>1077920
Откуда я знаю? Увидел что-то похожее:
main.cpp
wrapper/WrapperJNI.cpp
wrapper/WrapperJNI.h

Можно включить более подробный вывод, понятнее будет.
Аноним 19/10/17 Чтв 03:05:21  1077956
>>1077860
Зачем указывать REQUIRED и потом проверять if (Java_FOUND)?
Аноним 19/10/17 Чтв 03:24:33  1077960
>>1077954
>wrapper/WrapperJNI.cpp
>wrapper/WrapperJNI.h
анон, ты меня спас наверное
спасибо тебе человеческое!
>>1077956
пробовал всякое, поэтому осталось)
Аноним 19/10/17 Чтв 03:32:20  1077963
>>1077954
не, не помогло
всё равно
fatal error: jni.h: Нет такого файла или каталога
подключать пытаюсь и в кавычках и в скобках
всё равно ide говорит cannot find jni.h
ну вот и где я довен?
Аноним 19/10/17 Чтв 03:33:19  1077964
>>1077963
>>1077948
Аноним 19/10/17 Чтв 03:34:56  1077965
>>1077954
ОЙ СОРЯН, я все же довен.
пора спать наверное
забыл прилинковать
Аноним 19/10/17 Чтв 03:41:04  1077968
>>1077964
а ещё все же решил проверить ${JAVA_HOME}
и естественно мне ничего не вывело, сидел тупил .-.
Аноним 19/10/17 Чтв 06:20:40  1077995
>>1077909
>>1077968
Надо юзать не FindJava.cmake, а FindJNI.cmake, как уже сказал другой антуан. В кеше должен появиться JAVA_HOME, а лучше Java_INCLUDE_DIRS
Аноним 19/10/17 Чтв 10:07:00  1078061
2ch, мне во всей программе нужно сменить тип с int на long long int, как это можно сделать?
Аноним 19/10/17 Чтв 10:15:27  1078064
>>1078061
Делаешь в хедере typedef long long int idx_t;
Меняешь тип индексов на idx_t с int.
Аноним 19/10/17 Чтв 10:23:30  1078067
>>1077895
Вот эта говнокод.
Я даже вникать не стал.
Тотально нечитабельно.
Если бы ты был моим подчененным я бы тебя уволил за такое.
Аноним 19/10/17 Чтв 12:00:16  1078098
>>1078061
Самый топорный вариант - автозамена с помощью регекса, но автозамене похер на комментарии.
Аноним 19/10/17 Чтв 12:03:14  1078100
>>1078098
Более того, по смыслу многое скорее всего не нужно заменять на long long int. Нужно программу всю перечитывать 100%, на будущее урок будет для типов делать тайпдефы.
Аноним 19/10/17 Чтв 12:22:29  1078110
>>1078100
>для типов делать тайпдефы.
Никакие тайпдефы делать не надо самому. Ибо есть уже все тайпдефы которые нужны.
#include <stdint.h>

А заменять int на long long int это как с одного непортабельного костыля переваливатсья на другой.
Юзай int64_t / least / fast и т.д.
А с голыми интами наебешься, если будешь портировать куда-то даже на другой компилятор.
Аноним 19/10/17 Чтв 12:31:02  1078112
>>1078110
Типичный случай с интом: у тебя больше 2^16 элементов для индексов или меньше? Если больше, то тебе нужен 32-битный инт (если у тебя индекс инт), если меньше, то 64-битный.
Откуда стандартной библиотеке в принципе знать, сколько у тебя может быть элементов? libastral.so включили в стандартную поставку?
Никаких тайпдефов не надо ему.
Аноним 19/10/17 Чтв 12:35:22  1078116
>>1078112
>Если больше, то тебе нужен 32-битный инт (если у тебя индекс инт), если меньше, то 64-битный.
Ну, то есть, наоборот.
Аноним 19/10/17 Чтв 12:51:38  1078127
>>1078112
Если может быть больше, то используй uint64_t или uint64_fast_t, в чем проблема-то? Но больше 32х бит для индексов это надо придумать еще где такое использоватсья может. Если только ты большие ( больше 4 гб ) файлы читаешь в память, или для оффсета к тем же файлам. Больше то врпинципе такие индексы не нужны.
Вообще для индексов есть специальный тайпдеф - size_t. На 32х битной платформе ты все равн оне сможешь адресовать больше 4гб памяти, а на 64х битной он 64х битный.
Аноним 19/10/17 Чтв 12:56:20  1078129
>>1078127
Я-то причём? Я использую. В зависимости от версии программы или uint32_t или uint64_t. Но в любом случае тип индексов должен задаваться typedef'ом, выйти за 4 гб бывает не легко, а очень легко.
size_t для этого не годится, может быть сильно длиннее, чем нужно.
Аноним 19/10/17 Чтв 12:58:02  1078131
>>1078067
Школьник плес. Учи уже С++1* а не си с классами.
Аноним 19/10/17 Чтв 13:02:07  1078134
Попробовал CLion и понял, какая же это параша. Несмотря на то, что VS написана на C#, она работает в разы быстрее, чем это джава поделие. Даже аналог IntelliSense сделан настолько всрато, что для простой подсказки переменной в очень маленьком проекте (меньше 300 строк) требуется около 1-2 секунд.
Аноним 19/10/17 Чтв 13:17:54  1078147
>>1078129
Ну выйти за 4 гб памяти я хз, что ты там пишешь. Если какие то сервера на которых по 128 гб оперативы, то там полюбому 64х битная архитектура и size_t будет соотвутствующий, если же сомневаешься можешь использовать uint64_t.
Но если твое приложение нацеленно поддерживать и 32х битные и 64х битные архитектуры, то тут сам подход изначально должен быть другим, и на 32х битной архитектуре выйти за передлы даже 3х гб памяти это уже катастрофа, ибо остальное будет занято ОС, и твоя программа начнет свопаться на диск, а если свопа нет, то это либо тотальное зависание системы, если она не кильне твой процесс, либо аварийный выход из-за невозможности аллокейта памяти.
Но опять же если тебе нужны уверенно 64х битные индексы, то никт оне запрещает тебе их использовать.

>>1078131
Да я то уже давно выучил, когда он еще в драфте был и успел уже разучить, ибо понятно, что это говно делает код только более нечитабельным и менее производительным.

>>1078134
А вот это ты зря. CLion самая адекватная IDE по всем параметрам, если бы она еще кроме CMake поддерживала бы autotools и make было бы вообще идеально.
Конечно там еще по мелочи некоторых фич полезных нету, типа встроенного дизасемблера бинарников и отладчик там деревянный, но я им не пользуюсь обычно, отлаживаю на дебаг логах, а если прям совсем нужно использую gdb из консоли.
Но про тормоза, ты гонишь, у тебя комп наверное деревянный.
У меня Clion вообще никогда не тормозит, не подвисает и время отклика моментальное. Даже в больших проектах.
Студии нету, ибо я не дебил, чтоб писать на С/С++ под винду.
Аноним 19/10/17 Чтв 13:32:04  1078151
>>1078147
Ты упорно даёшь мне бесполезные советы, которых я не просил. Пожалуйста, будь внимательнее. Не думал заглянуть к психотерапевту? Добра тебе.
>>1078064>>1078100>>1078112>>1078129-кум
Аноним 19/10/17 Чтв 13:35:24  1078154
Двач, ничего не понимаю в этом вашем девелоперском социоблядстве, есть одна говнота под названием imlib2 от которой зависит моя любимая программа и которая нихуя нормально не работает из-за этой библиотеки, скажите, возможно-ли мне как-то разработчикам imlib2 коммитов в сраку репозиторий напушить?
Аноним 19/10/17 Чтв 17:11:09  1078275
>>1078154
У опенсоса могут быть:
- почта
- мэйлинг лист
- ищью трекер
Что-нибудь одно из этого у разрабов есть.
Аноним 19/10/17 Чтв 17:29:44  1078278
>>1078275
>ищью трекер
Ору с этого engrisha
Аноним 19/10/17 Чтв 17:53:17  1078284
>>1078147
Это один из самых читаемых примеров кода в треде, каждая строчка четко выражает замысел, насчет производительности конечно у тебя пруфов не будет.
Аноним 19/10/17 Чтв 17:56:03  1078286
>>1078154
Твою библиотеку лет 10 как не поддерживают, пиши свою.
Аноним 19/10/17 Чтв 18:18:26  1078297
>>1078284
>Это один из самых читаемых примеров кода в треде
Ты скозал?

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

Алсо, ты жестко проебался c i <= CONFIG_THREAD_COUNT, у тебя создается всегда на 1 тред больше чем указано в конфиге. Алсо, слово count тут не уместно, ибо обозначает счет, а не количество.

На счет производительности, думаю что умный С++11 делает mfence после каждого измениния атомарной переменной. Хотя не уверен, но ты можешь запостить дизассемблер и мы разберемся.
Но вообще, компилятору намного сложнее оптимизировать такие конструкции с кучей лямбд и всякой хуйни. Можешь посмотреть доклады разработчиков clang для достоверности.
Аноним 19/10/17 Чтв 18:24:11  1078299
>>1078297
>Алсо, ты жестко проебался
Это не мой код, с тобой другой анон говорит.
>Хотя не уверен, но ты можешь запостить дизассемблер и мы разберемся.
Нет, дорогой, это ты утверждал про производительность, ты и доказывай.
Аноним 19/10/17 Чтв 18:27:18  1078301
>>1078297
> думаю что умный С++11 делает mfence после каждого измениния атомарной переменной
`sum += acc` это просто `lock xadd`
Аноним 19/10/17 Чтв 19:41:32  1078366
15083577499120.png (10Кб, 796x177)
Сап, плюсач. Как сделать так, чтобы вместо пикрил вектор отображался по-нормальному (как массив)
VS2015
Аноним 19/10/17 Чтв 19:53:29  1078370
>>1078278
https://www.ldoceonline.com/dictionary/issue
Сасай.
Аноним 19/10/17 Чтв 20:03:44  1078379
Аноны, мне нужна книга/серия туториалов по с++, но не просто что-то типа "вот это целочисленный тип int, а это логический bool" а нормальный гайд по языку с нормальной структурой и не обязательно хорошим описанием я могу сам загуглить некоторые вещи, к примеру я не совсем понимаю разницу между: const T&, T&, T, T&& и T*, так же какой-то маг в своём коде написал while(1), что ввело меня в ступор из-за неявного преобразования. Проблема поиска конкретных вещей в том, что я могу пропустить какую-нибудь фичу языка и в итоге сделать неоптимизировано/дикий костыль-велосипед за который меня найдут и жестоко покарают.
Аноним 19/10/17 Чтв 20:30:24  1078402
Снимок.JPG (46Кб, 1013x341)
>>1078366
VS 2017, все хорошо
Аноним 19/10/17 Чтв 22:53:33  1078536
Screenshot (5).png (131Кб, 1920x1080)
>>1075352
>>1077895
>>1078299
>>1078301
ВНИМАНИЕ ВСЕМ!
ПОКАЗЫВАЮ КАК ПРАВИЛЬНО ПИСАТЬ НА С++11.

https://pastebin.com/ErqiRZJW

В этой работе, я хотел показать элегантность и мощность нового стандарта С++11.
Мне бы очень хотелось, чтобы в мире было больше С++11.
Люди должны мыслить абстракциями и метаобъектами.
Моя работа это вызов общественности, люди должны понять, что они заблуждаются если не пишут на С++11...

Всем спасибо.
Аноним 19/10/17 Чтв 23:01:21  1078538
>>1078536
Пост-ирония.
Аноним 19/10/17 Чтв 23:09:32  1078544
>>1078536
too fat
Аноним 19/10/17 Чтв 23:19:02  1078551
>>1078536
А где unique_ptr для уникальных значений? Где move? Где аллокаторы в фактори функциях? Где в конце концов abstract number factory? Где typename перед каждым T? Где decay->decltype для всех вызываемых функций, неба, аллаха? Почему +1 , = 0 не заменены локальными неймспейсами с интегральными ( enterprise::super_smart_integer_enough_for_everything) константами?
Аноним 19/10/17 Чтв 23:33:37  1078556
>>1078551
Да ты прав, там явно нехватает С++11. Могу создать репу на гитхабе и будем туда пул реквесты делать, улучшая и совершенсвуюя стиль С++11.
Аноним 20/10/17 Птн 00:19:25  1078584
>>1078556
В общем, я запилил репозиторий на гитхабе, кто хочет поговнокодить на самом деле без говнокода на С++11 и т.п. присоеденяйтесь.

https://github.com/CppDvachAnon/CPP11/tree/abstract_number
Аноним 20/10/17 Птн 00:49:13  1078594
>>1078297
>Ты скозал?
не, другой анонче

>Дай дураку лямбды, так они всю программу в одной функции захуярят.
why not? особенно если вся программа помещается на один экран.

>Нахуя вообще функции использовать? Если можно прост окопипастнуть 2 одинаковых действия
в лямбду вынести? копипаста копипасте рознь.

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

>ты жестко проебался c i <= CONFIG_THREAD_COUNT
найди второе место, где я жестоко проебался и получи пирожок

>делает mfence после каждого измениния атомарной переменной
один анонче уже отписал насчет lock xadd, и он прав

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


Аноним 20/10/17 Птн 02:06:37  1078618
вчерашний jni страдалец возвращается
пытаюсь инвочить jvm - падает с sigsegv
это какойта адъ, ну и я конечно молодец
код сего непотребства прилагаю
h: https://pastebin.com/FWaDiFQN
cpp: https://pastebin.com/aShk60S7
выхлоп консоли: https://pastebin.com/1tunNQLA

собственно main
int main() {
jni::WrapperJNI wrapper;
wrapper.Init();
return 0;
}

не бейте
и обратите внимание внизу консольного выхода пишет радостное
JVM load succeeded: Version
танкеры чаю, тому кто пояснит за это дерьмо
Аноним 20/10/17 Птн 02:07:28  1078619
>>1078618
могу ещё дамп памяти приложить
как породник к своему подгорающему пердаку
Аноним 20/10/17 Птн 02:45:53  1078621
>>1078618
кажется понял что лажаю с unique_ptr, но это не точно
Аноним 20/10/17 Птн 02:52:42  1078626
image.png (187Кб, 1920x1080)
>>1078621
итак, оно вроде пусканулось, но в конце случилось веселье
самое время лажать в с++11 когда уже с++17
Аноним 20/10/17 Птн 08:16:51  1078669
>>1078402
Спасибо за помощь, блять
>>1078366
Решил путем "починки" установщиком студии
Аноним 20/10/17 Птн 10:14:07  1078693
>>1078626
> оно вроде пусканулось,
С тем же кодом или ты что-то уже поменял? Сделай помощь тебе более простой.
Аноним 20/10/17 Птн 12:06:52  1078720
>>1078618
> std::unique_ptr<JavaVMOption[]> options(new JavaVMOption[4]);
> options[4].optionString = const_cast<char >("-verbose:jni");
Пиздец.

> const_cast<char
>
> const_cast<char >
> const_cast<char
>
> const_cast<char >
> const_cast<char
>
Пиздец⁵

Но круче всего — это использование unique_ptr и методы Init() + Release() при наличии нормального управления ресурсами в языке.
Аноним 20/10/17 Птн 12:10:49  1078722
>>1078626
Посмотри, что у тебя лежит в твоих unique_ptr, прежде чем методы у хранящихся там указателей дёргать.
Аноним 20/10/17 Птн 12:19:03  1078723
image.png (6Кб, 629x22)
>>1078626
А зачем ты пиздишь? Это я found the solution, а не ты.
Аноним 20/10/17 Птн 12:26:56  1078726
>>1078618
К нам в айти отдел пришёл новый сотрудник. Нужно сказать, что у нас в отделе работают почтенные крестогоспода. Новичка посадили за компьютер, но не успели даже дать задание, как он начал кодить. Начальник из любопытства подошёл посмотреть, что он там написал. В течении секунд тридцати он побледнел, затем посинел, затем покраснел, а потом трясущимся от нескрываемого гнева голосом сказал:
- Это же Абстрактная фабрика! На чём ты кодил до этого?
- На Джаве.
- Жабапидор! - в один голос заорали все 20 человек.
- Жабапидор! Жабапидор! Жабапидор!
Кто-то включил сирену. Над дверьми замигали красные лампочки тревоги. На окнах мгновенно сомкнулись плотные жалюзи. В офисе одновременно бывает два отдела человек по сорок. На обеде вся эта толпа собирается на первом этаже, где яблоку негде упасть. А поэтому, как охранники ни пытались вырвать джавапидора из рук разъяренной толпы, им это не удалось. По всему офису стоял сплошной рев:
- Жабапидор!
В коридоре его сразу же сбили с ног. Используя галстук как поводок, его тащили через весь коридор, передавая из рук в руки. Поэтому получалось так, что никакого движения в коридоре не происходит, но и джавапидора тоже нет. Его заволокли в каптерку под лестницей, где хранятся ведра и швабры с тряпками, и там закрыли. Под конец рабочего дня он всё же появился. За получасовой обед его изнасиловали несколько человек. Сопротивляться было бы бесполезно. Через день на нем чистым оставалось одно лицо, а на теле не было живого места. Он превращался в мразь, в животное. Его били все, даже дизайнеры и уборщицы. Его заставляли есть говно и опарышей. В очко ему совали битые лампочки, живых птиц и змей. Он стал «дельфином» – в нужнике пятнадцать дырок, он ныряет в первую, выныривает, ныряет во вторую... И так – до конца. От него постоянно воняло. С ним невозможно было рядом находиться. Был такой случай: к нам устроился работать Степаныч. Степаныч сидит на толчке, а кто-то снизу через очко хватает его за яйца. Степаныч с воплем вылетает в коридор без штанов. Напротив - айти отдел. Смех не стихал долго... Потом Степаныч забил его кирзовым сапогом насмерть. Менты как узнали, что сдох джавапидор даже дело заводить не стали.
Аноним 20/10/17 Птн 13:33:32  1078749
Двач, я не могу понять, что за перегрузку ввели в C++14 для функции find у классов set/multiset? Может кто подсказать?
>template<class K> iterator find(const K& x);
Аноним 20/10/17 Птн 13:37:22  1078752
>>1078749
http://en.cppreference.com/w/cpp/container/map/find
Аноним 20/10/17 Птн 13:42:50  1078753
>>1078752
Молодец, гуглить умеешь, в программировании это тебе поможет.
Аноним 20/10/17 Птн 13:45:18  1078754
>>1078753
>гуглить умеешь
А ещё умею читать на английском.
Аноним 20/10/17 Птн 13:49:10  1078757
>>1078722
yep, именно там и была проблема, догадался
но всё равно спасибо
>>1078720
таки такое тз
плюс метод DeleteJavaVM делает именно то что и сказано
поэтому у unique_ptr начинаются месяки на вызове деструктера
Аноним 20/10/17 Птн 13:50:15  1078760
>>1078757
unique_ptr можно передавать custom deleter.
Аноним 20/10/17 Птн 13:52:57  1078761
>>1078726
>- На Джаве.
>- Жабапидор! - в один голос заорали все 20 человек.
Ещё на котлине :)
Но я не виноват, что у тех с кем мы работаем код на жабе
Сказали запилить плюсы - пилю
причем у них жаба вызывает плюсы через jni ирония
Аноним 20/10/17 Птн 14:49:18  1078770
>>1078761
А тебе нужно просто код с плюсов запусть в жава проекте?
Я просто не пойму, почему ты кресты в dll какую нибудь не засунешь, а из java просто dll функции вызывать? Или в жаве нельзя обращаться к dll? Или у нас не шиндовс?
Аноним 20/10/17 Птн 16:52:13  1078832
>>1078726
>За получасовой обед его изнасиловали несколько человек.
Я так ненавижу пидорасов, что хочу выебать их!
Аноним 20/10/17 Птн 18:18:49  1078860
>>1078726
Про абстрактную фабрику не понял, это как-то связано с джавой?
Аноним 20/10/17 Птн 18:20:07  1078861
>>1078860
Тем, что ЖАВА ООП ПАТТЕРНЫ КУКАРЕКУ НУЖНО БОЛЬШЕ ФАБРИК, БОЛЬШЕ ИНТЕРФЕЙСОВ ПО ИНТЕРФЕЙСУ НА КАЖДОЕ ПОЛЕ
Аноним 20/10/17 Птн 18:23:43  1078862
>>1078861
Требую дополнительных пояснений, я тут наоборот пытаюсь въезжать в паттерны, даже книгу на днях купил и позавчера как-раз пытался учить эту фабрику но забил всё-равно, скучно, что с паттернами и уж тем-более ООП не так? Мы же на C++ а не на C.
Аноним 20/10/17 Птн 18:24:56  1078863
>>1078862
С паттернами всё отлично. Плохо то, что жава рабы их суют в каждую дыру не понимаю для чего какой паттерн нужен.
Аноним 20/10/17 Птн 18:59:57  1078883
>>1078862
Слушай, добрый совет тебе, выброси нахуй эту гнигу, а лучше вообще сожги, чтоб другие не прочитали.
ООП патерны в С++ почти никогда не нужны, если ты не пишешь говно типа как на яве. Я сам прочитал несколько гниг gof и т.п про это говно и мне ниразу эта параша не пригодилась на работе и никто из нормальных людей это не использует.
Аноним 20/10/17 Птн 19:08:17  1078894
>>1078770
Мне нужно из плюсов вызывать жаба код, вот в чем подвох.
Просто я знаю что этот жава код в итоге вызывает плюсы.
инсайдерская инфа 146%
Можете даже попробовать угадать сферу деятельности)
Аноним 20/10/17 Птн 19:50:36  1078933
>>1078894
>Можете даже попробовать угадать сферу деятельности
Разработка под андроид.
Аноним 20/10/17 Птн 19:57:20  1078939
>>1078933
Не нихуя)
Аноним 20/10/17 Птн 23:03:36  1079049
Аноны, я лютейший ньюфаг, работаю погромистом на питоне и вообще не понимаю, как работает рантайм. То есть, если я захочу покласть в переменную строку с названием класса, а потом "создать" из этой строки объект - у меня это не получится?
Аноним 20/10/17 Птн 23:20:39  1079062
>>1079049
Нет.
Аноним 20/10/17 Птн 23:30:08  1079068
>>1079062
А почему? Объясни, пожалуйста, если не хочешь или сложно, скажи: в книжке Липпмана это будет разбираться? Я только начал просто. Если не будет - скинь что-нибудь про работу компилятора (в очень общих чертах), разумеется, если несложно.
Аноним 21/10/17 Суб 07:36:03  1079136
>>1079068
Имена типов хранятся, но они... Сложные. Можно вытащить из типа строку типа такой (это std::string)
NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Они сложные из-за того, что используется метапрограммироване и классы генерятся во время компиляции.
> скинь что-нибудь про работу компилятора (в очень общих чертах)
Очень тяжело рассказать про работку компилятора в очень общих чертах. Советую начать с первой ссылки в гугле по запросу how c++ compiler works
Советую забить на плюсы, они очень сложные, а профита тебе с них никакого не будет
Аноним 21/10/17 Суб 10:32:20  1079164
>>1079136
Почему стоит забить?
Аноним 21/10/17 Суб 11:27:52  1079174
>>1079164
>Почему стоит забить?
>они очень сложные, а профита тебе с них никакого не будет
А по поводу сабжа
>если я захочу покласть в переменную строку с названием класса, а потом "создать" из этой строки объект - у меня это не получится?
То что ты описал. Так работает dll. Только вызываются функции. С помощью dll непосредственно получить объект созданный в этом самой dll получить достаточно сложно. И насколько я понимаю тут уже зависит от платформы. Если бы не пайтон, а какой нибудь .net язык и шиндовс, то можно было бы Invoke использовать или тот же COM
Аноним 21/10/17 Суб 11:48:05  1079179
Пацаны, а как правильно typedefить указатели на функцию. Поясните пожалуйста, будьте котиками.
Аноним 21/10/17 Суб 11:59:37  1079185
>>1079179
https://stackoverflow.com/questions/4295432/typedef-function-pointer
Не забудь прокрутить вниз до std::function
Аноним 21/10/17 Суб 13:23:27  1079223
>>1079049
>То есть, если я захочу покласть в переменную строку с названием класса, а потом "создать" из этой строки объект - у меня это не получится?
Если очень сильно приспичит, и ты готов использовать нестандартные расширения языка - это в целом возможно, только ты просираешь статическую типизацию (один из важнейших инструментов программирования на плюсах).
Аноним 21/10/17 Суб 20:53:35  1079500
50SVqxSKiF0.jpg (82Кб, 1344x706)
2321gg.jpg (84Кб, 1367x706)
Почему так происходит? Кто знает? интрэсно
Аноним 21/10/17 Суб 21:12:52  1079520
>>1079500
Перегрузка функции operator<<().
Во втором случае печатается значение указателя (адрес в памяти).
Аноним 21/10/17 Суб 21:15:10  1079522
>>1079500
Попробуй p явно преобразовать к char*
Там какая-то проблема с самим cout

http://www.learncpp.com/cpp-tutorial/613-void-pointers/
Аноним 21/10/17 Суб 21:17:18  1079524
>>1079500
Что по-твоему должен делать оператор вывода, видя перед собой указатель на void? Как он по-твоему должен догадаться о том, что там строка/число/структура?
Аноним 21/10/17 Суб 21:35:00  1079532
>>1079500
Какой же С++ уебищный язык господи. Нет ничего лучше старого добротного FORTRAN.
Аноним 21/10/17 Суб 21:40:56  1079543
>>1079532
Ну у него там как раз С. От крестов там только поток вывода
Аноним 21/10/17 Суб 21:54:10  1079562
>>1078536
>С++11
>19/10/17
Аноним 21/10/17 Суб 21:58:13  1079566
Почему не получается прилепить к std::filesystem::path дополнительный путь, получаемый через std::string_view, при помощи operator/()? string прилепляется нормально можно конечно string(string_view), но емана, мои лишние аллокации!!!
Аноним 21/10/17 Суб 21:59:05  1079568
Лаба по С++.
Аноны,проверьте пожалуйста,все ли сделал так.
Задание:
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры.
Пик.
Решение:
#include <iostream>
#include <math.h>
using namespace std;
int main(){
double s=0,y=0,n,ex,x,min,max,h,exx;
cout<<"Vvedite n"<<endl;
cin>>n;
cout<<"Vvedite min"<<endl;
cin>>min;
cout<<"Vvedite max"<<endl;
cin>>max;
cout<<"Vvedite shag"<<endl;
cin>>h;
for (int k=0,x=min; k<=n,x<=max; k++, x+=h){
exx=2k+1;
ex=(exx-1)
exx;
if (k==0) ex=1;
s=pow(-1,k)pow(x,(2k+1))/ex;
y=sin(x);
cout<<"k = "<<k<<" , S(x) = "<<s<<" ,Y(x)= "<<y<<" ,|Y(x)-S(x)|= "<<fabs(y-s)<<endl;
}
system("pause");
}
Аноним 21/10/17 Суб 22:02:31  1079572
>>1079568
Все правильно, сдавай.
Аноним 21/10/17 Суб 22:03:54  1079574
>>1079568
Залей на https://ideone.com/
Разметка сожрала знаки умножения. Но выглядит вроде правильно
Аноним 21/10/17 Суб 22:05:19  1079577
>>1079568
>"Vvedite shag"
Проиграл с этого в голос.
Уже не первый раз замечаю у студентиков с лабами такую хуйню на транслите.
Вас блять что английскому не учат в ваших ПТУ? Этож пиздец, какой-то.
Покажи такой код кому-нибудь в реальной жизни вне лабы, люди же охуеют просто и засмеют сразу.
Пиздец неужели трудно выучить блять хотя бы элементарный уровень языка, чтобы придерживатсья правил установленных в мировом сообществе программирования?
Аноним 21/10/17 Суб 22:08:45  1079581
>>1079577
Часто преподы не знают английский, либо просто требуют сдавать работы исключительно с транслитом
Аноним 21/10/17 Суб 22:09:38  1079583
>>1079577
У некоторых вообще заставляют кириллицей писать в виндовую консольку.
Аноним 21/10/17 Суб 22:10:11  1079584
>>1079566
Наверное - из-за отсутствия нужной перегрузки в языке.
Аноним 21/10/17 Суб 22:11:13  1079586
>>1079577
Да тут дело ещё хуже. Предположим нужно сделать на русском. Но дело в том, что он не потрудился сделать LC_ALL и писать на русском. А начал городить транслит. У нас тут 2017 как бы utf уже стандарт. Транслин ненужен
Аноним 21/10/17 Суб 22:11:24  1079587
Снимок.PNG (9Кб, 740x237)
>>1079583
А шо не так?
Аноним 21/10/17 Суб 22:12:41  1079588
>>1079584
В том то и дело, что её почему-то нету во всяком случае в спермо стд. При чем есть бумажка 2016 года, направленная наверное в комитет, не уверен, в которой запрашивается эта фича.
Аноним 21/10/17 Суб 22:12:46  1079589
>>1079577
Лол.
Мой препод - тетка лет 70.
Она говорит инклюд матч,микрософт и лабалаторная.
Аноним 21/10/17 Суб 22:13:37  1079590
>>1079587
А если кодировка файла не виндовая 12четатам, а человеческий utf-8?
Аноним 21/10/17 Суб 22:14:17  1079592
6aca56f4d4358ee[...].png (83Кб, 205x193)
>>1079590
А тебя ебет какая у меня кодировка, свинопитек?
Аноним 21/10/17 Суб 22:15:29  1079594
>>1079581
Если препод не знает английского и преподает С++, то можно смело нахуй слать такого долбоеба ибо ничему хорошму он не может научить хотя бы ввиду того, что 99% знаний о программирование находится в англоязычном формате.

>>1079586
А че LC_ALL то? Может хотя бы LC_LANG? Но в общем, даже если он укажет LC_ALL=ru_RU.UTF-8 то не факт что в системе будет установленна эта локаль. А инглишь поддерживает все, и тут 100% не проебешься.
Аноним 21/10/17 Суб 22:17:13  1079601
>>1079592
Ебет, если твоя пораша запустится на моей консольке, с другой кодировкой.
Аноним 21/10/17 Суб 22:18:17  1079603
>>1079594
>Если препод преподает С++
Не преподает. Там максимум сишечка и винапи.
Аноним 21/10/17 Суб 22:18:17  1079604
>>1079601
С чего ты взял, говноглот, что кто-то разрешит тебе запускать мои клевые программы, да еще и из под прыщеговна?
Аноним 21/10/17 Суб 22:20:18  1079608
>>1079604
Хорошо, что ты не разрешаешь запускать свое говно приличным людям. Но на всякий случай добавь туда комментарии "Не спермоглотам не запускать".
Аноним 21/10/17 Суб 22:20:26  1079609
>>1079603
>Там максимум сишечка и винапи
Я тебе по секрету расскажу. Но расшарить winAPI не так и просто на нормальном уровне конечно же. Тем более winAPI оперирует уже с таким понятие как операционная система. И там уже нужно знать как оно работает и как там всё описывается.
Аноним 21/10/17 Суб 22:22:35  1079611
>>1079608
>"Не спермоглотам не запускать".
Если там будет такой комментарий, тебе будет можно запускать.
Аноним 21/10/17 Суб 22:22:38  1079613
>>1079609
Я говорил про то, что кресты не преподают.
А чего сложного в винапи? Появилась задача, гугли пример, уточняй что в нем происходит на msdn, перепиливай под свою задачу.
Аноним 21/10/17 Суб 22:23:15  1079615
>>1079611
Нет, я же не спермоглот.
Аноним 21/10/17 Суб 22:23:20  1079616
>>1079613
С таким успехом ничего сложного и в крестах нету
Аноним 21/10/17 Суб 22:23:53  1079617
>>1079615
Докажи, что не спермоглот. Возьми в рот сперму и не глотай.
Аноним 21/10/17 Суб 22:24:00  1079619
>>1079616
Так и есть.
Аноним 21/10/17 Суб 22:24:58  1079621
>>1079617
Я думаю, для этого доказательства достаточно будет не брать сперму в рот.
Аноним 21/10/17 Суб 22:27:36  1079625
>>1079621
А как ты узнаешь, что тебе не захочется проглотить сперму?
Аноним 21/10/17 Суб 22:31:27  1079635
>>1079625
А к чему этот признак? По определению "спермоглот" занимается глотанием спермы, а не раздумьями "захочется или нет". Если не набирать её в рот, то и проглотить не получится. мы же взрослые крестовики, и не будем заниматься грязными хаками, в виде заливания спермы через нос?
Аноним 21/10/17 Суб 23:56:24  1079702
>>1079588
http://en.cppreference.com/w/cpp/filesystem/path/append
http://en.cppreference.com/w/cpp/filesystem/path/path
Собственно, если у тебя прилепляется string, то у тебя вызывается конструктор path, а для конструктора есть нужная перегрузка. Выкладывай код, что-то здесь нечисто.
Аноним 22/10/17 Вск 00:46:38  1079722
>>1079625
>>1079635
у кого что болит - тот о том и говорит. Вы оба спермоглота.
Аноним 22/10/17 Вск 03:27:20  1079754
Сап, посаны. Подскажите пожалуйста, как получить Base64 из .png картинки? Или уж на то пошло, из любого бинарного файла.
Аноним 22/10/17 Вск 08:43:23  1079798
>>1079603
У нас (в 2012) один препод пытался преподавать плюсы. Начал писать код на доске и обосрался. Объяснить я ему не смог, он ушёл в полную несознанку. Я к нему на пары больше не ходил.
Аноним 22/10/17 Вск 09:53:38  1079813
50SVqxSKiF0.jpg (294Кб, 1907x867)
Почему рандом на столько рандомный ?
Аноним 22/10/17 Вск 10:04:09  1079815
>>1079813
Используется одинаковый сид, чтобы он был разным, надо его инициализировать, например, временем.
Вся суть курсохуесосов, что с вас взять. Шёл бы да книжку почитал.
Аноним 22/10/17 Вск 10:51:48  1079832
Сап, аноны. До недавнего времени я кодил прошивки для всяких кортекс-М3 на C, но, в связи с тем, что один из мною любимых компиляторов (нет, не gcc), начал поддерживать С++14, я решил вкатиться. Вкатываться решил методом написания периферийной библиотечки, суть которой такова:
Есть модуль периферии/несколько идентичных модулей, к которому/которым относятся некие конфигурационные регистры, битовые поля в которых отвечают за некие настройки. Библиотека должна обеспечивать методы, модифицирующие эти поля, обеспечивая при этом максимальную защиту от дебила, сидящего за монитором, проверяя на этапе компиляции передаваемые параметры.
Делать это в рантайме, как в сишных библиотеках, поставляемых производителями, уныло и тупо.
В результате, пока что пришел к такому варианту:
Модули периферии объявляются как шаблоны классов с заблокированными конструкторами и статическими методами. Внутри класса объявляются enum class-ы, содержащие возможные значения битовых полей. Для модификации регистров объявляется шаблон метода, который проверяет static_assert-ом тип переданного enum-а, ну а затем делает нужные манипуляции. Вот в таком виде:

namespace VE4 {
////////////////////////////////////////////////////////////////////////////
/// Список портов GPIO
enum class Gpios : uint32_t {
GpioA = 0x40080000,
GpioB = 0x40088000,
GpioC = 0x40090000
};
////////////////////////////////////////////////////////////////////////////
/// Шаблон порта GPIO
template <const Gpios port>
class Gpio {
public:
// Запись/чтение напрямую
static uint16_t Get() {
return base->RXTX;
}
static void Set(const uint16_t d) {
base->RXTX = d;
}
protected:
Gpio();
// Структура управляющих регистров
typedef struct {
uint32_t RXTX;
uint32_t OE;
uint32_t FUNC;
uint32_t ANALOG;
uint32_t PULL;
uint32_t PD;
uint32_t PWR;
uint32_t GFEN;
} Regs;
// И указатель на нее
static constexpr Regs base = (Regs)port;
};
////////////////////////////////////////////////////////////////////////////
/// Шаблон отдельного пина
template <const Gpios port, const uint32_t pin>
class Pin : public Gpio<port> {
public:
// enum-ы с битовыми масками
enum class Direction : uint32_t {
Input = 0,
Output = 1,
MASK = 1 // для сброса поля
};
enum class Function : uint32_t {
GPIO = 0,
Main = 1,
Alternate = 2,
Remapped = 3,
MASK = 3
};
// Чтение/запись
static bool Get() {
return _gpio::base->RXTX && setmsk;
}
static void Set(bool b) {
if (b) _gpio::base->RXTX | setmsk;
else _gpio::base->RXTX & clrmsk;
}
// Конфигурация
template <typename T>
static void Config(T cfg) {
// Проверка передаваемых enum-ов static_assert-ом
APPLICABLE_TYPES(Direction,
Function);
if (ChkType<T, Direction>()) { ModBits<T, pin>(cfg, _gpio::base->OE); } // Модификация бит в регистре по маске и смещению маски
if (ChkType<T, Function>()) { ModBits<T, pin>(cfg, _gpio::base->FUNC); } // Да, нужно в макрос обернуть
}
protected:
Pin();
private:
static constexpr uint32_t setmsk = 0x01u << pin;
static constexpr uint32_t clrmsk = ~setmsk;
using _gpio = Gpio<port>;
};
}

В результате получается, можно писать так:
void f() {
using PA1 = VE4::Pin<VE4::Gpios::GpioA, 1>;
PA1.Config<PA1::Direction>(PA1::Direction::Output);
}

В связи с этим хочу узнать мнение анонов, правилен ли такой подход?
Аноним 22/10/17 Вск 11:00:43  1079835
>>1079813
Ты на крестах пишешь. Гспд. Ну ты хотя бы попытался заглянуть в стандартную библиотеку
http://www.cplusplus.com/reference/random/
Аноним 22/10/17 Вск 11:06:28  1079838
>>1079832
Собственно где тут С++14?
Что значит правилен?
У тебя не код, а какое насилие шаблонов. И залей его куда нибудь. Читать невозможно.
Нахуя там namespace в начале? Чтобы точки потом можно было ставить?
Аноним 22/10/17 Вск 11:15:41  1079843
15065734058880.jpg (21Кб, 500x370)
>>1079838
>библиотека
>нахуй неймспейс?
Аноним 22/10/17 Вск 11:20:39  1079848
>>1079838
1. using, constexpr, вот это вот все.
2. Ну есть же какие-то правила хорошего тона, разве нет?
3. Что не так с шаблонами? https://pastebin.com/F6zJyE5K, https://pastebin.com/MFw32PkR
4. Чтобы отделить библиотеку от всего остального.
Аноним 22/10/17 Вск 11:26:23  1079853
>>1079848
А. Пост твой не прочитал нормально.
Я наверное не могу оценивать. Но мне нравится код
Аноним 22/10/17 Вск 11:55:36  1079869
>>1079702
#include <string_view>
#include <filesystem>
#include <fstream>
#include <iostream>

using namespace std;
namespace fs = experimental::filesystem;

fs::path data_path;
ifstream filestream;

fs::path FileSystemManager::GetDataPath()
{
return data_path;
}

FileSystemManager filesystem;

void openfile(string_view file_name)
{

//filestream = ifstream(filesystem.GetDataPath() / string(file_name)); // это работает
filestream = ifstream(filesystem.GetDataPath() / file_name); // это нет
if (!filestream)
{
//throw underflow_error;
return;
}
}

Как-то так
Аноним 22/10/17 Вск 11:57:25  1079870
>>1079869
https://pastebin.com/74MNmW5Z
Аноним 22/10/17 Вск 12:00:39  1079871
>>1079754
https://ru.wikipedia.org/wiki/Base64
>Схема соответствия «символ — значение» в Base64
Читаешь побайтово из одного потока, прогоняешь его через энкодер, и выводишь в другой поток.
Аноним 22/10/17 Вск 12:11:17  1079877
>>1079870
http://coliru.stacked-crooked.com/a/8256d1a5f54133f8
Ты про эту ошибку говоришь или про какую? ТЫ СВОЮ ОШИБКУ ЗАПОСТИШЬ БЛЯДЬ ИЛИ МНЕ НУЖНО КЛЕЩАМИ ТЕБЯ ЗА ЯЗЫК ТЯНУТЬ?
Аноним 22/10/17 Вск 12:26:42  1079881
Вопрос к экспертам, с помощью только либы SDL2 можно написать приметивный , но красивый GUI, (кнопки, радиокнопки, чекбоксы, формы для ввода, выбор файла)?
Аноним 22/10/17 Вск 13:32:45  1079909
>>1079869
https://wandbox.org/permlink/86fIEMXB64zlcCR1
Аноним 22/10/17 Вск 15:24:42  1079960
>>1079877
filesystemmanager.cpp(73): error C2679: binary '/': no operator found which takes a right-hand operand of type 'std::string_view' (or there is no acceptable conversion)
\msvc\14.11.25503\include\filesystem(1500): note: could be 'std::experimental::filesystem::v1::path std::experimental::filesystem::v1::operator /(const std::experimental::filesystem::v1::path &,const std::experimental::filesystem::v1::path &)' [found using argument-dependent lookup]
filesystemmanager.cpp(73): note: while trying to match the argument list '(std::experimental::filesystem::v1::path, std::string_view)'
Аноним 22/10/17 Вск 16:01:15  1079985
>>1079960
>>1079909
Аноним 22/10/17 Вск 16:02:00  1079986
>>1079813
>Почему рандом на столько рандомный ?
>на столько
Потому что готовься к ОГЭ.
Аноним 22/10/17 Вск 17:08:44  1080051
>>1079813
>> #include <conio.h>
>> #include <time.h>
Говноед плес. Ты зацем со своим Цэ в терд крестов пришел. Дали ему в крестах рандомы с настраиваемыми генераторами и распределениями, нет, блять, хотим парашу с цэ жрать.
Аноним 22/10/17 Вск 17:09:27  1080052
>>1080051
>Ты зацем со своим Цэ в терд крестов пришел.
кони-о это даже не Цэ
Аноним 22/10/17 Вск 17:19:25  1080057
>>1080051
Только твоя параша из С++ работает в 1000 раз медленее обычного rand().
Аноним 22/10/17 Вск 17:23:33  1080064
image.png (44Кб, 678x242)
>>1080057
> параша из С++ работает в 1000 раз медленее обычного rand().
Хули ты пиздишь?
https://stackoverflow.com/a/35359918
Аноним 22/10/17 Вск 17:25:25  1080065
>>1080057
Даже если на 2 порядка, что не так. Но она хотя бы нормально работает.
Аноним 22/10/17 Вск 18:43:46  1080105
>>1080057
Пруфы, неосилятор. Бенчмарки, ассемблерный код.
Аноним 22/10/17 Вск 18:45:22  1080106
>>1079832
Код не читал, подход правильный.
Аноним 22/10/17 Вск 18:56:52  1080112
>>1080105
Ладно, не пожалел почаса и потратил на написание бенчмарка.
https://pastebin.com/tKPfDNY2

Вот тесты с моей тачки с core i5 4670k:

[Trace timer]: Clocks per second 3,385,997,176
C++ uniform distribution 10,000,000 runs
Total exec cycles: 719,350,631
Avg cycles/run : 71
C rand 10,000,000 runs
Total exec cycles: 310,099,258
Avg cycles/run : 31
RDRAND fair rand 10,000,000 runs
Total exec cycles: 2,856,603,050
Avg cycles/run : 285
RDRAND unfair rand 10,000,000 runs
Total exec cycles: 2,823,199,699
Avg cycles/run : 282

Надеюсь вы там разберетесь как это скомпилировать. Я в хедере написал флаги.


Аноним 22/10/17 Вск 18:57:44  1080113
>>1079985
То есть у шланга все работает? Придется на время смириться с виндопроблемами.
Аноним 22/10/17 Вск 18:58:14  1080114
>>1080112
Сорян вот тут версия с thousand seperators для читабельности
https://pastebin.com/KqAqR3Pf
Аноним 22/10/17 Вск 19:04:33  1080123
>>1080112
Среднее время мало о чем говорит, надо гистограмму.
Аноним 22/10/17 Вск 19:06:17  1080124
>>1080112
Эм. Может ты не будешь им диапазон задавать. Понятно что при нормализации будет медленно. Делай вот так
random_device rd;
mt19937 gen(rd());
gen(); <- возвращает рандомное число.
Аноним 22/10/17 Вск 19:44:49  1080136
>>1080124
Да так быстрее, вроде показывает 10 циклов avg, но там походу у меня баг с rdtsc, что-то циклы странно показывает. Сейчас нахожусь под виндой и компилирую mingw думаю может из-за этого.
Аноним 22/10/17 Вск 19:59:50  1080144
>>1080136
Я конечно не эксперт. Но зачем ты натыкал атрибутов, если не используешь gcc. И вообще зачем тебе эти атрибуты тут.
Или это копипаст с интеловской документации просто?
Аноним 22/10/17 Вск 20:08:37  1080149
>>1080124
> int rand_cpp(std::mt19937& gen) {
> return gen();
> }
C++ uniform distribution 10000000 runs
Total exec cycles: 140928009
Avg cycles/run : 14
C rand 10000000 runs
Total exec cycles: 468254179
Avg cycles/run : 46
Аноним 22/10/17 Вск 20:10:00  1080151
>>1080149
Так и какой вывод из этого можно сделать?
Аноним 22/10/17 Вск 20:14:44  1080153
>>1080151
Басни про скорость работы сишного генератора случайных чисел -- брехня?
Если честно, нет никакой разницы, 14 или 46, гораздо важнее качество распределения. Вот тут можно похоливарить. А заполнение кучей случайных чисел боттлнеком вряд ли станет, только если в монте-карло каком-нибудь очень гнойном.
Аноним 22/10/17 Вск 20:16:54  1080155
>>1080144
Атрибуты что бы не дать копилятору удалить код во время оптимизации.

>>1080149
Да ты прав mt работает побыстрее rand. Мне теперь интересно настолько быстрее будет работать свой Mersenne Twister генератор.
Аноним 22/10/17 Вск 20:21:59  1080157
>>1080155
Вот ради интереса боевой компилятор вместо govnocc
$ icpc -v
icpc version 14.0.0 (gcc version 4.8.0 compatibility)

[Trace timer]: Clocks per second 2,294,860,167
C++ uniform distribution 10000000 runs
Total exec cycles: 99331272
Avg cycles/run : 9
C rand 10000000 runs
Total exec cycles: 283317471
Avg cycles/run : 28
Аноним 22/10/17 Вск 20:29:39  1080160
>>1080153
>Вот тут можно похоливарить
https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful
Уже похоливарено
Аноним 22/10/17 Вск 20:30:47  1080162
>>1080155
>Атрибуты что бы не дать копилятору удалить код во время оптимизации.
Где-то удалить, а где-то запрещает инлайнить. Мне не понятно зачем это в контексте твоего кода?
Аноним 22/10/17 Вск 20:36:31  1080164
>>1080157
Виноват, принёс не самый свежий. Исправляюсь.
$ icpc -v
icpc version 17.0.2 (gcc version 4.8.5 compatibility)
$ icpc -O3 -std=c++11 example.cpp
$ srun a.out
[Trace timer]: Clocks per second 2,294,871,009
C++ uniform distribution 10000000 runs
Total exec cycles: 77200799
Avg cycles/run : 7
C rand 10000000 runs
Total exec cycles: 296607359
Avg cycles/run : 29

>>1080155
Я принёс последний интеловский компилятор, сможешь цифру 7 обуздать? Мне просто тоже стало интересно, насколько быстро можно сделать.
Аноним 22/10/17 Вск 20:40:13  1080166
>>1080164
Слушай, ну впринципе можно со своим mt генератором на AVX и распалаллеленым твистером, но это уже задача посерьезней.
Аноним 22/10/17 Вск 20:41:20  1080167
>>1080166
Присылай, затестим

$ srun cpuinfo
Intel(R) processor family information utility, Version 2017 Update 2 Build 20170125 (id: 16752)
Copyright (C) 2005-2017 Intel Corporation. All rights reserved.

===== Processor composition =====
Processor name : Intel(R) Xeon(R) E5-2697 v4
Packages(sockets) : 1
Cores : 1
Processors(CPUs) : 1
Cores per package : 1
Threads per core : 1

===== Processor identification =====
Processor Thread Id. Core Id. Package Id.
8 0 26 0
===== Placement on packages =====
Package Id. Core Id. Processors
0 26 8

===== Cache sharing =====
Cache Size Processors
L1 32 KB no sharing
L2 256 KB no sharing
L3 45 MB no sharing
Аноним 22/10/17 Вск 20:58:54  1080176
>>1080167
Лол, не. Это надо уже долго сидеть разбираться в тонкостях алгоритма, чтобы подстроить его под SIMD.
Но как говорит вики, есть реализации на SSE2 которые в 2 раза быстрее обычного, с учетом того, что SSE регистры 128 битные и оперируют за раз по 4 32х битных числа, то AVX c 256 битными регистрами теоритически может дать х4 прирост скорости без изменения алгоритма.
Вообще если дальше идти можно и на GPGPU запилить, и генирировать просто таблицу рандом чисел и потом просто идти по ней, это точно будет в десятки раз быстрее, чем даже C++ генератор.
Аноним 22/10/17 Вск 21:24:52  1080188
Аноны, какие есть простые интуитивно программы, для создания приложений в оконном режиме?
Аноним 22/10/17 Вск 21:25:39  1080189
>>1080188
Visual Studio
Аноним 22/10/17 Вск 21:28:38  1080192
>>1080188
winForm. Не знаю завезли кресты в WPF.
А если тебе кроссплатформу, то попробуй Qt.
Аноним 22/10/17 Вск 21:29:46  1080194
>>1080192
>то попробуй Qt
Легче недельку потратить на изучения шарпа и недельку на WPF, чем несколько лет дрочить Qt и всё равно писать глючную парашу.
Аноним 22/10/17 Вск 22:02:45  1080217
Да мне для учебы. Проект не коммерческий.
Аноним 22/10/17 Вск 22:05:11  1080219
Аноны, поясните, зачем нужен std::allocator_traits.

Для меня это выглядит как лишняя обертка над std::allocator. То есть вместо того , чтобы явно работать с std::allocator , я буду писать что-то типа:
std::allocator_traits<std::allocator<Type>> и потом уже вызывать методы allocator_traits.
И нахера?

Аноним 22/10/17 Вск 22:44:46  1080238
Всегда надо сначала записать вводимый пользователем текст в строку, а потом переводить ее в массив чаров с использованием strcpy или можно сразу в него забить?
Аноним 22/10/17 Вск 22:46:51  1080241
>>1080238
std::string это массивоподобный контейнер, вполне возможно, тебя он устроит.
Аноним 22/10/17 Вск 22:56:29  1080247
>>1080241
Хочу просто понять указатели, поебаться с динамическим массивом чаров. Мне надо эту самую строку, которую введет пользователь, из string перевести в динамический массив. Что-то я запутался.
Аноним 22/10/17 Вск 22:59:16  1080248
mas.png (8Кб, 392x280)
Как-то так.
>>1080247-кун
Аноним 22/10/17 Вск 23:00:03  1080250
>>1080248
char *sym = &str[0];
Аноним 22/10/17 Вск 23:00:51  1080251
>>1080248
У вас тут сегфолт.
>>1080250
Отвратная идея.
Аноним 22/10/17 Вск 23:04:12  1080254
>>1080247
Дело в том, что ты сейчас занимаешься С стайлом. Это не кресты. Ты можешь использовать метод c_str для того, чтобы получить из с++ строк std::string С строку которая char*.
Но зачем оно тебе нужно? Работая с C строками, ты работает с со стандартной библиотекой С, а значит тебе не в этот тред.
Ну и std::string в твоём понимании это динамический массив, но правильно это конечно же назвать контейнером.
Аноним 22/10/17 Вск 23:10:53  1080258
>>1080254
Благодаря тебе кое-что прояснилось. Спасибо.
Аноним 22/10/17 Вск 23:11:41  1080259
.png (19Кб, 446x346)
>>1080251
Даже не знаю, чем она тебе не приглянулась.
Аноним 22/10/17 Вск 23:17:57  1080261
>>1080259
Делаешь лишние предположения о реализации.
Аноним 22/10/17 Вск 23:18:48  1080262
>>1080254
Проиграл с деба, советующего понять указатели, не используя указатели.
Аноним 22/10/17 Вск 23:23:10  1080265
>>1080262
Можно изучать указатели, работая со string же, а не с *char.
Аноним 22/10/17 Вск 23:23:18  1080266
>>1080262
Где ты видишь, чтобы я ему что-то советовал. Я ответил на его вопросы.
>Мне надо эту самую строку, которую введет пользователь, из string перевести в динамический массив
>Ты можешь использовать метод c_str для того
Аноним 22/10/17 Вск 23:24:20  1080267
>>1080261
Что здесь лишнего?
Аноним 22/10/17 Вск 23:26:02  1080269
>>1080267
Предположение, что в эту память можно что-то записывать.
Аноним 22/10/17 Вск 23:30:24  1080272
>>1080269
Непрерывность строки гарантируется.
Чем тогда
pStr[2] = '@';
отличается от
str[2] = '@';
?
Аноним 22/10/17 Вск 23:35:33  1080277
image.png (4Кб, 213x68)
>>1080261
А так тоже лишние предположения?
Аноним 22/10/17 Вск 23:40:54  1080278
Снимок.PNG (6Кб, 435x180)
Лучше расскажите как вы относитесь к такому способу изучения указателей
Считаю этот код практически произведением искусства и верх гибкости и универсальности и МОЩИ С++.
Аноним 22/10/17 Вск 23:41:57  1080280
>>1080278
Это просто >>1080277 с заменой addressof на &
Аноним 22/10/17 Вск 23:43:30  1080281
>>1080280
Да увидел уже. Делал это когда не было поста того. Но отвлёкся и прослоупочил.
Аноним 22/10/17 Вск 23:56:56  1080286
1111.png (9Кб, 456x308)
Всё таки не хочу перекатываться в С-тред. Хочу просто создать строку *char, занести в нее введенное пользователем значение и работать с ней дальше, используя С++.
Нашел код пикрелейтед, но он ругается на сишную getline. Че делать? Мозги уже кипят.
Аноним 23/10/17 Пнд 00:07:26  1080288
>>1080286
http://ru.cppreference.com/w/cpp/string/basic_string/getline
getline первым аргументом всегда принимает поток, вторым так называемый буфер и 3 разделитель. А у тебя getline с какой-то непонятной сигнатурой.
А то что у тебя это http://man7.org/linux/man-pages/man3/getline.3.html
Он принимает 3 аргументом поток типа FILE. Короче ты запутался.
Распутывайся.
>Хочу просто создать строку char, занести в нее введенное пользователем значение и работать с ней дальше, используя С++.
Короче. Делай так.
std::string str;
std::getline(std::cin, str);
char
c_str = str.c_str();
и всё. Делай с c_str что хочешь
Аноним 23/10/17 Пнд 00:07:48  1080289
>>1080286
https://ideone.com/8KsfIq
Почитай уже вначале книжку, а потом мучайся.
Аноним 23/10/17 Пнд 00:08:31  1080291
>>1080286
Это под windows? getline это unix расширение, на крайняк можно использовать std::getline, а затем из std::string брать char\*
Аноним 23/10/17 Пнд 00:09:57  1080292
>>1080288
>char° c_str = str.c_str();
Только вот c_str() возвращает const char°
Аноним 23/10/17 Пнд 00:10:26  1080293
>>1080288
>Короче. Делай так.
А не. Не делай. Там const char*. Ща исправлю
Аноним 23/10/17 Пнд 00:11:45  1080294
>>1080291
>getline это unix расширение
Да вроде стандарт
http://www.cplusplus.com/reference/istream/istream/getline/
>>1080292
Есть std::string::data(), да только запись в этот буфер это undefined behavior. Вы заебали, прекратите ебать строку указателями, дрочеры чёртовы. Читайте сразу в буфер.
Аноним 23/10/17 Пнд 00:11:59  1080295
>>1080292
что мешает взять адрес первого эллемента строки и использовать его?
Аноним 23/10/17 Пнд 00:12:37  1080296
>>1080295
Прямые руки запрещают.
Аноним 23/10/17 Пнд 00:13:08  1080297
>>1080294
на пике не плюсовый, а сишный getline http://man7.org/linux/man-pages/man3/getline.3.html
Аноним 23/10/17 Пнд 00:13:55  1080298
Снимок.PNG (5Кб, 394x190)
>>1080293
>>1080292

Короче можно так
Отвечаю. Ещё захочешь
Аноним 23/10/17 Пнд 00:14:16  1080299
>>1080295
Ничего, только вот тут параноики пишут >>1080261

Так или иначе, >>1080277 — официально рабочий способ.
Аноним 23/10/17 Пнд 00:15:13  1080300
>>1080298
Я в курсе, что так можно.
Аноним 23/10/17 Пнд 00:15:42  1080301
>>1080297
point taken
>>1080298
Дикий вырвиглазный костыльный пиздец, да ещё и не портируемый. Нормальный способ >>1080289
Аноним 23/10/17 Пнд 00:15:46  1080302
>>1080300
Ну я ему >>1080286
Аноним 23/10/17 Пнд 00:16:42  1080303
>>1080301
>Нормальный способ
И как потом работать с указателями?
Аноним 23/10/17 Пнд 00:17:03  1080304
>>1080301
> да ещё и не портируемый.
Что ты имеешь в виду?
Аноним 23/10/17 Пнд 00:17:04  1080305
>>1080301
>да ещё и не портируемый
В каком месте?
Аноним 23/10/17 Пнд 00:18:12  1080306
>>1080303
Как обычно. buffer это char*
>>1080305
Да нельзя в буфер строки писать, заебал. Он менеджится строкой, как ей вздумается. Придёт боженька и выебет тебя в жопу без самки.
Аноним 23/10/17 Пнд 00:18:36  1080307
>>1080306
>без самки
*без смазки
Аноним 23/10/17 Пнд 00:19:39  1080308
>>1080306
> Придёт боженька и выебет тебя в жопу
Аргумент, ничего не скажешь.

А реальные будут?
Аноним 23/10/17 Пнд 00:20:49  1080310
>>1080306
http://en.cppreference.com/w/cpp/string/basic_string/getline
Посмотри пример
Аноним 23/10/17 Пнд 00:20:51  1080311
>>1080304
>>1080305
>>1080308
Блядь, и чего вам, дебилам, в плюсах будто мёдом намазано? Сидели бы и писали на пыхе
https://stackoverflow.com/questions/1042940/writing-directly-to-stdstring-internal-buffers
After a lot more reading and digging around I've discovered that string::c_str and string::data could legitimately return a pointer to a buffer that has nothing to do with how the string itself is stored. It's possible that the string is stored in segments for example. Writing to these buffers has an undefined effect on the contents of the string.

Additionally, string::operator[] should not be used to get a pointer to a sequence of characters - it should only be used for single characters. This is because pointer/array equivalence does not hold with string.

What is very dangerous about this is that it can work on some implementations but then suddenly break for no apparent reason at some future date.

Therefore the only safe way to do this, as others have said, is to avoid any attempt to directly write into the string buffer and use a vector, pass a pointer to the first element and then assign the string from the vector on return from the dll function.

Аноним 23/10/17 Пнд 00:21:46  1080312
>>1080311
> answered Jun 25 '09
Мда.
Аноним 23/10/17 Пнд 00:22:03  1080314
>>1080310
Посмотрел. Что должно мне придти в голову?
Аноним 23/10/17 Пнд 00:33:18  1080318
>>1080314
То есть ты хочешь сказать, что
str[0] всегда равно char ptr = &(str.begin());
Но str[1] не всегда будет равно prt[1]?
Аноним 23/10/17 Пнд 00:38:58  1080319
>>1080318
Я хочу сказать, что при некоторых (очень маловероятных) условиях &str[0]+n и &str[n] будут различаться. Кроме этого при других условиях c_str() и data() могут вернуть указатель на другой буфер (например, копию). Кроме этого я хочу сказать, что буфер может быть убит при модификации строки любым non-const методом. Кроме этого я хочу сказать, что синтаксис с нулевым элементом просто уродлив.
По совокупности показателей так делать нельзя. Это быдлокод.
Аноним 23/10/17 Пнд 00:42:25  1080320
>>1080319
>Я хочу сказать, что при некоторых (очень маловероятных) условиях &str[0]+n и &str[n] будут различаться. Кроме этого при других условиях c_str() и data() могут вернуть указатель на другой буфер (например, копию).
Назови эти условия.
P.S. Про то, что мы говорим про C++11+—эру упоминать дополнительно смысла нет, я думаю.

> Кроме этого я хочу сказать, что буфер может быть убит при модификации строки любым non-const методом.
Нет, любым не может.
Аноним 23/10/17 Пнд 00:44:45  1080321
>>1080319
>Это быдлокод
А использовать char* в крестах это нормально?
Аноним 23/10/17 Пнд 00:44:46  1080322
>>1080319
Это совершенно неважно в рамках обучения указателям. Так то конечно реализации могут быть разными, Small Buffer Optimization та же.
Аноним 23/10/17 Пнд 00:45:18  1080323
>>1080321
А как взаимодействовать с реальным миром? Винапи там, ядро линукса.
Аноним 23/10/17 Пнд 00:50:05  1080326
>>1080320
Ты делаешь очень много лишних допущений.
https://stackoverflow.com/questions/14290795/why-is-modifying-a-string-through-a-retrieved-pointer-to-its-data-not-allowed
Зачем ты придумываешь на ходу свой собственный манястандарт, конченный? Совсем необучаемый?
>>1080321
Да, вполне нормально. Указатели это не такая уж и редкая штука.
>>1080322
>Это совершенно неважно в рамках обучения указателям.
Нет, это не нормально в процессе обучения. Не надо учиться писать быдлокод, а потом переучиваться. Сизифов труд это необучаемость
Аноним 23/10/17 Пнд 00:54:46  1080330
>>1080326
>Ты делаешь очень много лишних допущений.
Всего 3 предложения из стандарта.

> https://stackoverflow.com/questions/14290795/why-is-modifying-a-string-through-a-retrieved-pointer-to-its-data-not-allowed
> Now, that being said, it is perfectly valid to modify the &str[0] pointer, and the array of characters therein. So long as you stay in the half-open range [0, str.size()).

Сам себя переспорил, молодец.
Аноним 23/10/17 Пнд 00:54:50  1080331
>>1080326
По твоей же ссылке написано, что это легаси (за исключением модификации ссылки на пустую строку)
Аноним 23/10/17 Пнд 00:58:44  1080334
>>1080323
>А как взаимодействовать с реальным миром?
Хорошее замечание кстати. Но дело в том, что изначально был вопрос о том, как ввести строку из консольки и представить её в виде сишной строки.
Хотя стоит отметить, что если ты используешь winAPI, то ты используешь их затайпдейфиное чудо. Понятно, что за каким нибудь TCHAR скрывается char для ANSI и w_char для unicode. Но всё таки.
Аноним 23/10/17 Пнд 13:23:00  1080495
Пацантре, а где посмотреть как устроен <thread>
Не его .h файл, а именно сам код. Вот например если для шиндовса, то где посмотреть как оно winAPI юзает?
Аноним 23/10/17 Пнд 13:46:52  1080504
Двач, я что-то семантику перемещения понять не могу хотя и просмотрел уже всё что можно по этой теме, скажите хотя-бы, move semantics и perfect forwarding это одно и тоже или разное?
Аноним 23/10/17 Пнд 14:03:09  1080508
>>1080495
Где-нибудь в Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.11.25503/crt/src
Аноним 23/10/17 Пнд 15:09:44  1080537
>>1080504
Разное
забей на forward, пока не поймёшь что такое move
Аноним 23/10/17 Пнд 16:59:52  1080592
Работаю с winsock С++
Кто-нибудь объяснит, отчего может возникать ошибка 11004
WSANO_DATA?
Когда запускаю функцию в консольном приложении
hn = gethostbyaddr((char*)&IP, 16, AF_INET);
всё работает нормально. Но когда класс с этой же функцией использую в winapi, выдаёт такую ошибку. Ещё указывается, что hostent hn равняется nullptr, поэтому невозможно прочитать
hn->name, а именно это и надо.
Аноним 23/10/17 Пнд 17:18:55  1080609
>>1080592
Внимательно прочитай статью на MSDN и узнай из неё, что должно быть в IP.
>>1079960
Ясен хуй, либо твоё компилятор не поддерживает новый стандарт драфт, либо нужный номер стандарта не указал.
>>1080188
Это ты в С++-треде спрашиваешь про интуитивную понятность?
>>1080254 >>1080321
Попробуй считать блок данных из потока, не используя обычный указатель.
>>1080259
Это нормально, а >>1080248 - нет.
>>1080272
>Непрерывность строки гарантируется.
В С++11 и далее.
>>1080311
В С++11 и далее непрерывность строки гарантируется, а в С++17 ещё и неконстантная .data()
>>1080504
До меня только вот только недавно всё это дерьмо допёрло. Объясняю.
Есть ссылки, ссылки могут быть обычные и на конст. Комитет решил, что обычные ссылки ссылаться на временные значения не могут, так программисты будут ошибаться, думая, что значение, переданное по обычной ссылке будет использовано. Поэтому комитет сказал, что передавать временные значения по обычной ссылке нельзя, а по ссылке на конст - можно (и при этом деструктор откладывается до момента выхода функции, в которую по ссылке на конст было передано временное значение).
Охуеть, конечно. Потом комитет догадался до того, что иногда может быть плохо с точки зрения производительности НЕ изменять временное значение, так как в нём могут быть ресурсы (в широком смысле слова: память, дескрипторы, некопируемые объекты), которые можно и нужно использовать заново, и комитету пришлось ввести rvalue-ссылки (&&), которые такие же, как const &-ссылки, но позволяют менять объект. При этом есть соглашение о том, что объект, принятый по &&-ссылке, не должен вызывать ошибок после изменения, то есть, использовать его нужно правильно, а не "хуй с ним всё равно сдохнет". Соответственно, если есть две функции - f (const X& x) и f(X&& x), то, по принятому соглашению, обе они используют x, как входной параметр, и к тому же вторая функция может оставить объект пустым. std::move - это ТОЛЬКО преобразование любой ссылки не на конст в rvalue-ссылку, то есть, с помощью этой функции ты говоришь "ресурсы этого объекта можно заюзать", и вызывается более подходящая перегрузка функции.
Охуеть, стало лучше. Теперь появилась другая проблема - есть шаблоны, и шаблонным функциям иногда похуй на то, что они принимают, им всего лишь нужно передать аргумент дальше по цепочке без изменений, но если они принимают ссылку только одного типа, то для вложенных вызовов функций теряется информация о том, что ресурсы можно забрать.

Для этого ввели понятие "reference collapsing", которое означает, что если у тебя есть
template<typename T>
void f(T&& t) {

}

то у этого тимплейта будет два инстанса - в одном инстансе будет T&& t, а в другом инстансе будет T& t, и эти инстансы будут выбираться в соответствии с переданным аргументом. Но и здесь тоже возникает проблема: rvalue-ссылка прозрачна, и когда ты используешь ссылку, ты в 99,9999% случаев используешь объект, и тебе не видно, что объект этот - объект, ссылка или rvalue-ссылка. Чтобы решить эту проблему, ввели std::forward. который делает то же самое, что и std::move, но только тогда, когда тип аргумента - rvalue-ссылка.

Вот теперь заживём, блядь.

Аноним 23/10/17 Пнд 17:21:03  1080614
Короче говоря, perfect forwarding - это название для упорных попыток устранить копирования и сохранить move semantics во всех ситуациях, включая шаблоны, которые только передают аргументы дальше по цепочке.
Аноним 23/10/17 Пнд 17:32:05  1080620
>>1080609
>Внимательно прочитай статью на MSDN и узнай из неё, что должно быть в IP

У меня всё по канонам.
IPAddr IP = inet_addr(xxx.xxx.xxx.xxx");
const struct hostent hn = new hostent;
hn = gethostbyaddr((char
)&IP, 16, AF_INET);

Я же сказал, что код не работает только в winapi-программе
Аноним 23/10/17 Пнд 17:33:31  1080621
>>1080609
>>Непрерывность строки гарантируется.
>В С++11 и далее.
Спасибо, я в курсе. Очевидные вещи про версию стандарта просто не стал писать.
Аноним 23/10/17 Пнд 17:42:19  1080626
>>1080609
>std::move - это ТОЛЬКО преобразование любой ссылки не на конст в rvalue-ссылку
std::move это преобразование value category, а не типа. Читать, например, Мейерса нужно внимательно. Нет, ВНИМАТЕЛЬНО:
> Thus, std::move casts its argument to an rvalue, and that’s all it does.
Написано, что casts to an rvalue, а не casts to an rvalue reference.

> Для этого ввели понятие "reference collapsing"
Правило reference collapsing ввели вместе с появлением самих ссылок, ещё в C++98.
В C++11 просто дополнили правила коллапсинга для rvalue-ссылок и ввели специальное правило вывода типа шаблонной функции T, у которой тип аргумента указан как T&&. perfect forwarding работает в первую очередь благодаря этому правилу, а reference collapsing там на втором месте.
Аноним 23/10/17 Пнд 17:43:27  1080627
>>1080620
Какой-то ты ебанутый. У тебя память течёт, так как сначала ты создаёшь hostent, а потом просериваешь указатель на него.

Ебись с этими винапями сам, меня эти ебанутые винапи заебали. Отличий между консольным и WinAPI-кодом не знаю, та мне какую-то дичь впариваешь, консольная программа в блядовизуалке - это тоже WinAPI.
Аноним 23/10/17 Пнд 17:50:56  1080634
>>1080627
До этого я не выделял память, так что не из-за этого
Аноним 23/10/17 Пнд 17:59:20  1080639
>>1080609
>нет
Что нет это понятно каждому лол. Труднее сказать почему нет. Разъясни почему нет?
Аноним 23/10/17 Пнд 18:13:24  1080651
>>1080620
Навскидку - не та ширина чара?
Аноним 23/10/17 Пнд 18:14:42  1080653
>>1080620
На стэковерфлоу такой коммент:

This is not an issue with having or not having an Internet connection. There is no guarantee that gethostbyname() can always resolve the hostname reported by gethostname() into an IP address on all platforms. So don't even try it, it is the wrong approach anyway. Use getifaddrs() or similar function instead.
Аноним 23/10/17 Пнд 18:37:33  1080669
>>1080639
Он пишет в никуда - создал один объект (char), а указатель использует так, как будто объектов дохуя. Очевидный UB (по правилам использования указателей, не указывающих на созданные объекты). Что лежит в динамической памяти после ОДНОГО созданного char - лишь аллаху известно. >>1080250 - ненормально потому, что гарантий непрерывности строки до C++11 не было, и теоретически строка может быть сегментирована, и оператор[] эту сегментацию прячет только тогда, когда ты его применяешь к самой строке.
Аноним 23/10/17 Пнд 18:53:55  1080676
>>1075680
вот он прав >>1075791, в релиз билде уже на -O2 все символьники так едут, что проще и даже полезнее их не подключать. проще собирать корку/дамп и анально щпялиться в ассемблер. или заюзать чонить типа sxstrace
Аноним 23/10/17 Пнд 19:00:01  1080677
Мне нужно построить простейший график. Возможно ли это, используя одну лишь стандартную библиотеку? После непродолжительного поиска нашёл только сторонние приложения и обёртки, но не одной самобытной либы.
Аноним 23/10/17 Пнд 19:05:01  1080679
>>1080677
Увы нет. Именно только стандартной не обойдешься.
Используй gnuplot.
Аноним 23/10/17 Пнд 19:14:56  1080682
>>1080653
>Use getifaddrs() or similar function instead.
Спасибо, попробую
Аноним 23/10/17 Пнд 19:35:08  1080691
Как реализовать поиск наиболее часто повторяющегося элемента в массиве?
Аноним 23/10/17 Пнд 19:35:40  1080693
>>1080691
Без задней мысли.
Аноним 23/10/17 Пнд 19:54:10  1080710
>>1080691
>Как реализовать поиск наиболее часто повторяющегося элемента в массиве?
Что нибудь слышал о map?
Аноним 23/10/17 Пнд 20:50:19  1080758
Не гоните сразу ссаными тряпками, ньюфаня в треде, собственно вопрос в чём, в винде для создания банального интерфейса использовал windows forms а что на линухе? wxWidgets?
Аноним 23/10/17 Пнд 20:54:11  1080766
>>1080758
Xlib,GTK,Qt,wxWidgets
Аноним 23/10/17 Пнд 20:55:06  1080767
>>1080766
>>1080758
Но ты скорее хотел получить ответ Xlib.
Аноним 23/10/17 Пнд 20:56:17  1080768
>>1080766
>>1080767
Что для даунов больше подходит?
Нужно быстро набросать проект и забыть о нем навсегда
Аноним 23/10/17 Пнд 20:57:59  1080769
>>1080768
>Что для даунов больше подходит?
Java
Аноним 23/10/17 Пнд 20:58:53  1080770
>>1080768
>Нужно быстро набросать проект и забыть о нем навсегда
Ух не ту платформу ты выбрал. Пиши на java да. >>1080769
Аноним 23/10/17 Пнд 20:59:44  1080771
>>1080770
>Ух не ту платформу ты выбрал
В том то и дело что не выбирал
Аноним 23/10/17 Пнд 21:01:51  1080774
>>1080771
А что там от GUI нужно? Зависит от сложности самого интерфейса.
Думаю Qt тебе подойдёт. Накидаешь там кнопок в форму и забудешь как страшный сон
Аноним 23/10/17 Пнд 21:03:56  1080776
>>1080774
>Накидаешь там кнопок в форму
Это и надо было.
Спасибо.
Аноним 24/10/17 Втр 07:49:56  1080993
Поясните за библиотеки. Зачем нужен .lib, почему одного .h недостаточно? Алсо, скажите где можно почитать об этом, желательно на русском
Аноним 24/10/17 Втр 07:55:02  1080995
>>1080993
.lib - это много уже скомпилированных в объектный файл .cpp-шников
Аноним 24/10/17 Втр 07:55:34  1080996
Только вкатываюсь, Серёжа, посоветуй чем парсить аргументы, что пришли с запуском. Самому писать и смотреть, что там в *argv[] мне пока ссыкотно, а нужны простые и gnu-сные уметь, так же значения по умолчанию и обязательные параметры. Чую, если буду писать велосипед остаток недели, сразу обосрусь и не будет радости.
Аноним 24/10/17 Втр 09:42:57  1081028
>>1080677
Что такое "построить график"? Вывести в память массив байт-пикселей для заданной функции - запросто.
>>1080710
А точнее - unordered_map.
>>1080996
https://www.gnu.org/software/libc/manual/html_node/Getopt.html
https://www.gnu.org/software/libc/manual/html_node/Parsing-Program-Arguments.html
Аноним 24/10/17 Втр 09:51:24  1081029
>>1080993
В .h у тебя должны храниться только прототипы того, что ты хочешь использовать. А вся их реализация хранится в cpp. Но для того, чтобы каждый раз не транслировать твой cpp в объектный код. Придумали lib. Статическая библиотека. По сути это просто тот же cpp только в объектом коде.
Аноним 24/10/17 Втр 11:14:56  1081055
>>1081029
Т.е. lib это предварительно скомпилированный cpp?
Алсо, вопрос, в доках по сборке libcurl есть 2 варианта сборки: static и dll. В чем разница и какой выбрать?
Аноним 24/10/17 Втр 11:20:15  1081056
>>1081055
Статический и динамический же.
Первый жирнее, но если ты передашь его на другой компьютер с той же архитектурой и операционной системой, он запустится.
Второй меньше. Но если ты передаешь его на другой комплуктер, а Vasyan_laba.dll передать забудешь, ничего не заработает. С другой стороны, зачем тебе статик, если ты ссылаешься, например, на директиксовую (или еще какуюраспространенную) библиотечку?
Уженешкольник
Аноним 24/10/17 Втр 11:22:07  1081057
>>1081055
Заебал. Все равно нихуя не поймешь.
Иди учи как работает компиляция и линковка
Аноним 24/10/17 Втр 11:25:08  1081060
>>1080996
boost::program_options
Аноним 24/10/17 Втр 11:29:19  1081063
Добре, давно у вас не был. Читал изменения C++17. Если от 11 у меня мурашки по коже были, в 14 были интересные моменты, то в 17 вообще не понятно, что и зачем. Опять это ебучее метапрограммирование, костыли на костыли. Неужели нельзя без этого?
Вопрос от дилетанта, кресты давно не практикую, современные стандарты так не трогал вообще толком.
Аноним 24/10/17 Втр 11:30:22  1081064
>>1080996
Берешь FSM генератор типа ragel ну или bison. .Забиваешь туда свою грамматику.
.Генируриешь парсер.
.Встраиваешь его в свою программу.
.Получаешь распарсенные аргементы.
.PROFIT???

Петушков с бустом не слушай, вообще лучше ничего из буста не используй никогда.
Аноним 24/10/17 Втр 11:33:37  1081066
>>1080609
>Ясен хуй, либо твоё компилятор не поддерживает новый стандарт драфт, либо нужный номер стандарта не указал.
Оказывается есть в visual studio переключалка на крайний драфт ISO C++ Latest Draft Standard (/std:c++latest). Но это все равно не помогло, майки тормозят.
В чем разница между c++17 и Latest Draft? Второй это уже добавление фич из c++20?
Аноним 24/10/17 Втр 11:46:04  1081070
>>1081055
>Т.е. lib это предварительно скомпилированный cpp?
Нет. lib - это архив с объектными файлами (.o или как оно там у вендозных) и ещё чем-то. Когда ты компилируешь файл, ты получаешь объектный файл.
>какой выбрать?
Любой.
>>1081063
>Неужели нельзя без этого?
Ты ещё спроси: "неужели нельзя без шаблонов". Можно, но тогда STL не сможет существовать.
>>1081066
>В чем разница между c++17 и Latest Draft?
НЕЕБУ.
Аноним 24/10/17 Втр 11:46:45  1081071
Почему в VS 17 автоматически через клас визард не пишется прагма ванс и не добавляется в сипипипи файл инклюд с хедером на заголовочный на созданный только что клас???
Аноним 24/10/17 Втр 11:48:12  1081072
>>1081063
> Опять это ебучее метапрограммирование, костыли на костыли. Неужели нельзя без этого?
В каком месте это костыли? Очень удобная штука, если разберешься.

Что в этом страшного?:
Символьные литералы UTF-8
Удаление некоторых устаревших типов и функций, например, таких как std::auto_ptr, std::random_shuffle или старых функциональных адаптеров
Библиотека файловой системы, основанная на boost::filesystem
Параллельные версии алгоритмов STL
Некоторые математические функции
Аноним 24/10/17 Втр 11:49:55  1081073
>>1081071
Напиши им в багтрекер.
Аноним 24/10/17 Втр 12:08:12  1081080
>>1081073
Если серьёзно, то class wizard реально не создаёт автоматически шапки дл конструктора, деструктора, прагма уанс итд
Это всё в VS17,

у меня одного так ?
Аноним 24/10/17 Втр 12:12:41  1081082
>>1081080
Если серьёзно, то таки напиши им в багтрекер. Может они и предполагают такое поведение.

>не создаёт автоматически шапки дл конструктора, деструктора
Еще бы возможность галочками отмечать требуемые функции. И чтоб с семантиками копирования/перемещения.
Аноним 24/10/17 Втр 12:21:21  1081084
>>1081057
Тащемта я и спрашиваю где об этом можно почитать
Аноним 24/10/17 Втр 12:57:18  1081098
>>1081080
Походу у одного. У меня на VS17 всё перечисленное создаётся само. Ты добавляешь класс к проекту, или создаёшь отдельно?
Аноним 24/10/17 Втр 13:02:04  1081099
>>1081098
А да, в этом проблема, спасибо
Аноним 24/10/17 Втр 14:21:27  1081131
В MSVS 17 испортил файл ws2def.h и сохранил. Где найти в сети эти файлы или можно ли как-то восстановить?
Аноним 24/10/17 Втр 14:34:15  1081134
>>1081131
Ну ты и васян. Это ты с winAPI сокетами ебался в ньюфаг треде?
Хз. Как восстановить.
https://github.com/stuta/Luajit-Tcp-Server/blob/master/c_include/windows/original/ws2def.h
Посмотри это то?
Аноним 24/10/17 Втр 14:50:24  1081143
.jpg (10Кб, 480x360)
>>1081131
Аноним 24/10/17 Втр 15:14:15  1081157
>>1081134
Лол. До сих пор ебусь
>ссылка
не похоже совсем даже
Аноним 24/10/17 Втр 17:22:05  1081239
ПЕ РЕ КАТ
>>1081237 (OP)
>>1081237 (OP)
>>1081237 (OP)
>>1081237 (OP)
>>1081237 (OP)
Аноним 24/10/17 Втр 19:10:39  1081311
>>1081060
не, нахуй его надо, этот буст.

>>1081028
мне надо что-нибудь с mit / bsd лицензией, гну это дно.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 513 | 38 | 110
Назад Вверх Каталог Обновить

Топ тредов
Избранное