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

Этого треда уже нет.
Это копия, сохраненная 15 августа 2018 года.

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

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

32 Кб, 600x400
C++ №71 25 мая, 17:57 1196791 В конец треда | Веб

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

Прошлый: >>1181867 (OP)

Ответы201297202707203194

25 мая, 18:03 2 1196795

187 Кб, 624x6281,9 Мб, 1285x12802,6 Мб, 1292x1286

Освятил

Ответы196801196878

25 мая, 18:14 3 1196801

>>1196795
>C++
>Богатым
С крестами можно заработать только шизофрению или геморрой.

Ответы196814196975198243201563

25 мая, 18:28 4 1196814

>>1196801
>С крестами можно заработать только шизофрению или геморрой.
Ну так он и есть живой пример этого.

25 мая, 21:13 5 1196878

>>1196795
И что это за хуйня?

Ответы196882

25 мая, 21:22 6 1196882

>>1196878
Если умеешь программировать на шаблонах с сохранением состояния (оно же stateful metaprogramming), то ты умственный миллиардер. А если нет, то ты и C++ толком не знаешь и вообще даун, лох и нищенка.

Ответы196926

25 мая, 22:40 7 1196926

>>1196882
А если умеешь протаскивать состояние через повторные вызовы constexpr-функций?

Ответы196929197010

25 мая, 22:44 8 1196929

>>1196926
Это тоже сорт stateful metaprogrammin. Вопрос снимается.

26 мая, 01:29 9 1196975

>>1196801
неврозы всякие.

26 мая, 06:01 10 1197010

>>1196926
Ни хуя себе. Как это?

Ответы197015197514

26 мая, 06:13 11 1197015

>>1197010
http://b.atch.se/posts/non-constant-constant-expressions/

Ответы197016197115

26 мая, 06:35 12 1197016

>>1197015
Таки да, сердце этой хуйни вот эта друг-функция: friend constexpr int flag (Tag)

Называется оно friend injection и его хотят запретить в последующих стандартах C++, ибо считается, что SMP это oche плохо. Впрочем хотели запретить ещё в C++17, но почему-то оставили.

Ответы197020

26 мая, 06:40 13 1197020

>>1197016
Ёбись оно в рот. Дружественные функции и так пиздецома, а теперь у них будет еще одно правило использования? Узнаю старые добрые плюсы.

Ответы197021

26 мая, 06:44 14 1197021

>>1197020
Насколько я знаю, в C++17 эту хуйню оставили потому что не смогли внятно описать, что именно нужно запрещать и как должно это правило использования выполнятся. Так что если они действительно добавят это ограничение, то его описание обещает быть мучительно непонятным. Впрочем, для C++ это не будет чем-то новым.

Ответы197129

26 мая, 12:54 15 1197115

>>1197015
Неужели в шланге так много багов?

Ответы197167

26 мая, 13:47 16 1197129

>>1197021
Ебать тебя врот, во какая заваруха.

26 мая, 15:22 17 1197164

У меня немного странный вопрос. Как известно double не равномерно покрывает ось, а постепенно уменьшая их плотность. А какие два числа из тех, которые можно задать даблом лижат ближе всего друг к другу? 0 и следубщее после него наменшее?

Ответы197275

26 мая, 15:25 18 1197167

>>1197115
В любом компиляторе куча багов, если использовать хоть и валидный, но редко используемый в продакшене код (а smp в здравом уме никто использовать в проекте не будет). Самый забагованный в этом плане msvc (начиная со своего собственного ни с чем не совместимого способа раскрытия макросов и заканчивая кучей багов в шаблонах и constexpr-функциях), но у clang и gcc тоже своих багов хватает.

26 мая, 18:00 19 1197275

>>1197164
Как-то так
#include <limits>
double mindouble = std::numeric_limits<double>::min();

5 Кб, 504x177
26 мая, 22:59 20 1197393

Я что-то не врублюсь как этот код работает.

Ответы197395

26 мая, 23:07 21 1197395

>>1197393
https://ru.wikipedia.org/wiki/Частичная_специализация_шаблона

А вообще это древнее дерьмо из времён C++98. Сейчас этот же код можно переписать в виде нормальной constexpr-функции.

Ответы197397

26 мая, 23:12 22 1197397

>>1197395
Можешь пожалуйста написать конкретно верхний пример, как бы он с constexpr-функцией выглядел?

Ответы197402

26 мая, 23:16 23 1197398

for (i = 0; i < M; i++)
{
for (k = 0; k < N; k++)
{
for (j = 0; j < N - 1; j++)
{
if (array[j] < array[j + 1])
{
int temp;
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
Вот эта хуита должна сортировать массив N*M по столбцам, но это не работает. Что тут исправить, чтобы заработало?

Ответы197400197403

11 Кб, 588x415
26 мая, 23:18 24 1197400

>>1197398
Господи, я даже вставить код нормально не могу, нахуй так жить?

Ответы197409197417

26 мая, 23:21 25 1197402

>>1197397
https://ideone.com/IDHF3z

pow11 - это для С++11 и выше, где не завезли relaxed constexpr, а потмоу используется рекурсия.
pow14 - для C++14 и выше, версия на итераторах.

Ответы197850

26 мая, 23:21 26 1197403

>>1197398
Напиши для одномерного, затем повтори M раз для столбцов. Делать нехуй местным специалистам одуплять твой код.

Ответы197408197411

26 мая, 23:33 27 1197408

>>1197403
> Напиши для одномерного, затем повтори M раз для столбцов.
Ебать ты программист.

Ответы197411

26 мая, 23:36 28 1197409

>>1197400
Напиши входные данные, что должно получиться и что на самом деле получается

26 мая, 23:38 29 1197411

>>1197403
>>1197408
Был неправ, на автомате подумал, что анону нужно матрицу сортировать.

Ответы197413

26 мая, 23:40 30 1197413

>>1197411
Погоди, я тоже ебать какой программист, не понял, где ты неправ?

Ответы197443

26 мая, 23:46 31 1197417

>>1197400
подсказка: индекс k нигде не используется

Ответы197420197421

26 мая, 23:47 32 1197420

>>1197417
Это, видимо, эффективная реализация пузырьковой сортировки

26 мая, 23:48 33 1197421

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

Ответы197424

26 мая, 23:51 34 1197424

>>1197421
Ну смари. Пузырёк требует 2 индекса для сортировки столбца. Третий индекс нужен для обхода столбцов. А вообще именовать индексы одной буквой это оче не оче.

88 Кб, 994x585
27 мая, 00:00 35 1197428

Уот так уот.

Ответы197431197458

27 мая, 00:05 36 1197431

>>1197428
Вверху у тебя 6 нулей, а внизу 4, как ты так

Ответы197434

27 мая, 00:08 37 1197434

>>1197431
Так в этом то и дело, что у меня выдает какую то хуйню, а я не знаю в чем проблема.

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

Ответы197444197446197466

27 мая, 00:29 38 1197443

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

Ответы197454

27 мая, 00:29 39 1197444

>>1197434
Объясни задачу точнее. Тебе нужно значения в каждом столбце отсортировать?

27 мая, 00:31 40 1197446

>>1197434
Друг мой, ты натворил какую-то хуйню в индексах. Что тут непонятного-то? Для одномерного массива:
for i = 0 ... N
for j = 0 ... N - 1
if arr[j] < arr[j + 1]

Для двумерного то же самое, только обернутое в еще один внешний for для беготни по столбцам.

Ответы197460197472

27 мая, 00:38 41 1197454

>>1197443
Короче. Напиши любой понравившийся алгоритм сортировки одномерного массива. Затем напиши специальную функцию-геттер, которая принимает указатель или ссылку на матрицу и:
1. Так же принимает на вход номер стобца и номер элемента в столбце, после чего возвращает ссылку или указатель на этот элемент. Для задания, где нужно отсортировать столбцы матрицы
2. Так же принимает на вход номер элемента в матрице и возвращает указатель на него.
Используя вспомогательную функцию, отсортируй матрицу. Если по столбцам, делай цикл по столбцам i от 0 до N, а внутри вставляй код алгоритма сортировки, только вместо обращения к k-му элементу (0 < k < M) одномерного массива делый вызов getter(Matrix, i, k). Для задания, где нужно отсортировать матрицу целиком, в цикле от по n от 0 до N*M вызывай getter(Matrix, n).

11 Кб, 470x484
27 мая, 00:42 42 1197458

>>1197428

27 мая, 00:44 43 1197460

>>1197446
В индексах, по-моему, всё в порядке, разве нет? Внешний цикл проходит по столбцам, а в пузыре проверяются элементы соседних строк

27 мая, 00:52 44 1197466

>>1197434
>лабы по параллельному программированию в OpenMP
За то, как ты собираешься это параллелить, тебя надо отчислять нахуй.

Ответы197472

27 мая, 01:11 45 1197472

>>1197446
Сделал как ты сказал и заработало, спасибо :3
>>1197466
А как лучше?

Ответы197489

27 мая, 02:27 46 1197489

>>1197472
>А как лучше?
Задачка типовая, поищи решение в гугле. Твоя матрица, это один кусок памяти, в котором значения хранятся последовательно по строкам. Данные столбца, которыми оперирует отдельный поток, разрежены и раскиданы по всей длине этого куска. В итоге будет больше копирований в кэш потока, если вся матрица в кэш не влезает (особенно для последнего столбца, у которого первый элемент в позиции n-1, а последний в конце массива). И вторая проблема - кэши потоков будут пересекаться, а так как сортировка редактирует данные, то эти кэши будут требовать постоянного обновления.

27 мая, 06:22 47 1197514

>>1197010
Это как через жопу хуй сосать. Не для всех.

27 мая, 18:17 48 1197850

>>1197402
Спасибо, теперь понятно что происходит. Но я все равно не пойму как тот верхний код работает, это какой-то ад.
А еще что значит relaxed constexpr, в нем нелья циклы использовать? Вообще какую книгу почитать, где все актуальные фишки C++ ясно и понятно описаны. У Страуструпа, или он шизик?

Ответы197865197878197887197889

27 мая, 18:34 49 1197865

>>1197850
> Но я все равно не пойму как тот верхний код работает
ОК, объясняю с самых основ. Начнём с
enum { value = 1 };
код выше это определение статической константы времени компиляции под именем value равной 1 из времён C++98, в C++11 используется более понятный синтаксис
static constexpr int value = 1;
т.е. в коде ниже
struct MyStruct {
enum { value1 = 1 };
static constexpr int value2 = 1;
};
значения переменных value1 и value2 можно получить как MyStruct::value1 и MyStruct::value2. При этом они определены во время компиляции, а значит их можно использовать как параметры для шаблонов. Вместо структуры можно использовать класс, единственная разница, что нужно указывать, что члены являются публичным (у структуры все члены публичные, потому обычно их используют в метапрограммировании, чтобы не писать public).

Вот можешь поиграться с кодом: https://ideone.com/LLXYqw

27 мая, 18:49 50 1197878

>>1197850
Едем дальше. Частичная специализация. Допустим у тебя есть шаблон
template<int N>
struct NumWriter {
static void write() {
std::cout << "Передано число " << N << std::endl;
}
};
Этот шаблон вызывается вот так NumWriter<1>::write(); Но что если для некоторых чисел (или типов) ты хочешь сделать особенное поведение? Вот тут можно сделать частичную специализацию шаблона вот так:
template<>
struct NumWriter<0> {
static void write() {
std::cout << "Передан нолик" << std::endl;
}
};
как видишь в определении шаблона мы опускаем аргумент, потому что он больше не нужен, но оставляем треугольные скобки и само слово template, поскольку класс всё ещё является шаблоном хоть теперь и не принимает аргументов. А в названии структуры (или класса) мы частично специализируем его, указывая при каких именно шаблонных аргументах он будет вызываться. Частично специализированный шаблон всегда имеет больший приоритет, чем просто шаблон, а потому NumWriter<0>::write(); вызовет именно частично специализированный шаблон.

Специализировать можно только часть аргументов. Например:
template<int N1, int N2>
struct NumWriter {
static void write() {
std::cout << "Переданы числа " << N1 << " и " << N2 << std::endl;
}
};
template<int N2>
struct NumWriter<0, N2> {
static void write() {
std::cout << "Передан нолик и число " << N2 << std::endl;
}
};
Специализация шаблона будет вызываться если первый аргумент равен нулю, а второй равен любом числу. Если первый аргумент не равен нулю, то вызывается первый шаблон.

https://ideone.com/wTZDOV

27 мая, 18:49 50 1197878

>>1197850
Едем дальше. Частичная специализация. Допустим у тебя есть шаблон
template<int N>
struct NumWriter {
static void write() {
std::cout << "Передано число " << N << std::endl;
}
};
Этот шаблон вызывается вот так NumWriter<1>::write(); Но что если для некоторых чисел (или типов) ты хочешь сделать особенное поведение? Вот тут можно сделать частичную специализацию шаблона вот так:
template<>
struct NumWriter<0> {
static void write() {
std::cout << "Передан нолик" << std::endl;
}
};
как видишь в определении шаблона мы опускаем аргумент, потому что он больше не нужен, но оставляем треугольные скобки и само слово template, поскольку класс всё ещё является шаблоном хоть теперь и не принимает аргументов. А в названии структуры (или класса) мы частично специализируем его, указывая при каких именно шаблонных аргументах он будет вызываться. Частично специализированный шаблон всегда имеет больший приоритет, чем просто шаблон, а потому NumWriter<0>::write(); вызовет именно частично специализированный шаблон.

Специализировать можно только часть аргументов. Например:
template<int N1, int N2>
struct NumWriter {
static void write() {
std::cout << "Переданы числа " << N1 << " и " << N2 << std::endl;
}
};
template<int N2>
struct NumWriter<0, N2> {
static void write() {
std::cout << "Передан нолик и число " << N2 << std::endl;
}
};
Специализация шаблона будет вызываться если первый аргумент равен нулю, а второй равен любом числу. Если первый аргумент не равен нулю, то вызывается первый шаблон.

https://ideone.com/wTZDOV

Показать весь текст

27 мая, 19:02 51 1197887

>>1197850
Ну и теперь рассмотрим твой код
template<uint8_t Base, uint32_t N>
struct Pow {
enum { value = Base Pow<Base, N - 1>::value };
};

template<uint8_t Base>
struct Pow<Base, 0> {
enum { value = 1 };
};

У нас есть шаблон и его частичная специализация при N равном нулю. Если мы напишем Pow<2, 0>::value (вместо 2 может быть любое число), то вызовется частичная специализация и этот код вернёт 1. В остальных случаях вызывается первый шаблон и начинаются вычисления. Допустим мы написали Pow<2, 3>. Он раскрывается в

struct Pow {
enum { value = 2 Pow<2, 3 - 1>::value };
};

Pow<2, 3 - 1> или Pow<2, 2> раскрывается в

struct Pow {
enum { value = 2 Pow<2, 2 - 1>::value };
};

Pow<2, 2 - 1> или Pow<2, 1> раскрывается в

struct Pow {
enum { value = 2 Pow<2, 1 - 1>::value };
};

Pow<2, 1 - 1> или Pow<2, 0> раскрывается в частично специализированный шаблон и на этом рекурсия заканчивается

struct Pow {
enum { value = 1 };
};

в итоге самый первый шаблон получает такие значения
struct Pow {
enum { value = 2 2 2 1 };
};
и в итоге Pow<2, 3>::value отдаёт 2 2 2 1 или 8.

27 мая, 19:02 51 1197887

>>1197850
Ну и теперь рассмотрим твой код
template<uint8_t Base, uint32_t N>
struct Pow {
enum { value = Base Pow<Base, N - 1>::value };
};

template<uint8_t Base>
struct Pow<Base, 0> {
enum { value = 1 };
};

У нас есть шаблон и его частичная специализация при N равном нулю. Если мы напишем Pow<2, 0>::value (вместо 2 может быть любое число), то вызовется частичная специализация и этот код вернёт 1. В остальных случаях вызывается первый шаблон и начинаются вычисления. Допустим мы написали Pow<2, 3>. Он раскрывается в

struct Pow {
enum { value = 2 Pow<2, 3 - 1>::value };
};

Pow<2, 3 - 1> или Pow<2, 2> раскрывается в

struct Pow {
enum { value = 2 Pow<2, 2 - 1>::value };
};

Pow<2, 2 - 1> или Pow<2, 1> раскрывается в

struct Pow {
enum { value = 2 Pow<2, 1 - 1>::value };
};

Pow<2, 1 - 1> или Pow<2, 0> раскрывается в частично специализированный шаблон и на этом рекурсия заканчивается

struct Pow {
enum { value = 1 };
};

в итоге самый первый шаблон получает такие значения
struct Pow {
enum { value = 2 2 2 1 };
};
и в итоге Pow<2, 3>::value отдаёт 2 2 2 1 или 8.

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

446 Кб, 600x738
27 мая, 19:07 52 1197889

>>1197850
> А еще что значит relaxed constexpr, в нем нелья циклы использовать?
Наоборот, без relaxed constexpr можешь писать только constexpr-функции состоящие из одного return и выражения внутри него.
> Вообще какую книгу почитать, где все актуальные фишки C++ ясно и понятно описаны.
Если с основами C++ уже знаком, то можешь пикрелейтед. Только она на английском, на русском актуальных книг нет.

Ответы198488202556203097203685205197

27 мая, 19:49 53 1197907

Что почитать по симдам, векторизации, DOD'у?

28 мая, 13:16 54 1198243

>>1196801
Жиза. Заработал шизу.

28 мая, 13:18 55 1198244

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

Ответы198466

28 мая, 20:29 56 1198466

>>1198244
Рекомендую жаву и Apache POI (сам писал такую хуйню, только вместо жавы использовал котлин). В С++ скорее всего нормальных библиотек не будет.

Ну или использовать COM-интерфейсы самого офиса.

Ответы198499

28 мая, 20:51 57 1198475

using TwoBytes = unsigned short int;
using FourBytes = unsigned int;

struct HashPair
{
size_t operator()(const std::pair<TwoBytes, TwoBytes>& p) const
{
FourBytes res = (p.first << 16) + p.second;
return std::hash<FourBytes>()(res);
}
};

std::unordered_map<std::pair<TwoBytes, TwoBytes>, int, HashPair> dict;

Господа, прошу помощи.
Есть одна unordered_map, с ключами в виде pair. Я хочу сделать, чтобы коллизий было столько же мало, сколько при ключах типа int. Почему приведенная выше хеш-функция некорректна(или все-таки норм?)? По сути, я формирую число типа int из двух двухбайтовых чисел, и вычисляю его хеш. Но результат все равно гораздо хуже, чем при ключах int.
Самописная функция проверки количества коллизий дает около 1300 штук в словаре размера 65535(2 байта) для int'ов и около 24000 для моей функции. Хотя обычные варианты из интернета и boost::hash<unsigned short int, unsigned short int> дают такой же результат(24000). Можно ли вообще сделать лучше?

Ответы198476198479198490

28 мая, 20:52 58 1198476

>>1198475
Код хуево вставился, но надеюсь понятно.

28 мая, 20:55 59 1198479

>>1198475
> using TwoBytes = unsigned short int;
> using FourBytes = unsigned int;
Есть же uint16_t и uint32_t, который имеют нужное количество байтов на любой платформе. Не забудь подключить хеадер <cstdint>.

Ответы198482

28 мая, 20:57 60 1198482

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

108 Кб, 2122x618
28 мая, 21:05 61 1198488

>>1197889
чет проигрываю с этих костылей на костылях

28 мая, 21:10 62 1198490

>>1198475
Подозреваю, что бакет в хешмапе вычисляется как hash%count. Поэтому, то что находится в верхних разрядах оказывается в пролете. Можешь посмотреть на правильную реализацию в boost::hash_combine, ну или в интернете.

Ответы198493

28 мая, 21:14 63 1198493

>>1198490
>вычисляется как hash%count
Да, именно так.
>то что находится в верхних разрядах оказывается в пролете
Но хеш имеет тип size_t(4 байта), так что по идее все влазит.
>boost::hash_combine
А за это спасибо, щас будем комбинировать.

28 мая, 21:24 64 1198499

>>1198466
Пасиба анон, я через com все же решил.

Ответы198625

28 мая, 22:17 65 1198522

>>1197887
Спасибо, что так разъяснил, вроде теперь понял. Но зачем столько ебатни? Да и еще рекурсия с шаблонами, это же вообще пиздец. Нельзя было просто сделать рекурсивную функцию, как ты в первом примере написал? Или это все ради того, чтобы тупо получить константу? Нельзя было внутри структуры вместо энума, написать static const?

Ответы198533

28 мая, 22:35 66 1198533

>>1198522
Как я говорил это всё костыли времен C++98 (при этом шаблоны языка даже не задумывались для подобного использования). Начиная с C++11 большую часть compile-time кода можно написать в виде constexpr-функций. Подобная шаблонная магия сейчас нужна разве что для написания трейтов, но с приходом концептов (где трейты можно будет писать в более понятном виде и компилятор будет выдавать понятные ошибки если что-то пойдёт не так) необходимость в ней практически отпадёт. Основная суть этого всего что вычисления происходят при компиляции, а в результирующей программе сохраняется только их результат.

Ответы198558

28 мая, 23:19 67 1198558

>>1198533
То есть в будущем (C++ 20?) эти навороченные шаблоны вымрут?

Ответы198560

28 мая, 23:27 68 1198560

>>1198558
Да их и сейчас мало кто использует. Просто станет проще писать шаблонный код. А когда добавят метаклассы (наверное к C++30) вообще зашибись будет. Останется только переработать систему типов сделав её более строгой, а то иногда неявными превращениями C++ уделывает JavaScript в неожиданности. Вот например угадай, что выведет эта программа и попробуй объяснить почему:

void fun(int a) {
cout << "int";
}
void fun(unsigned int a) {
cout << "unsigned int";
}

void fun(unsigned char a) {
cout << "unsigned char";
}

void fun(signed char a) {
cout << "signed char";
}

int main() {
fun('a');
}

Ответы198577198624198663

29 мая, 00:12 69 1198577

>>1198560
Слава господу!

>наверное к C++30
Ахаха лол сука. Будет ли он в 30-м году еще актуален? Может к тому времени какой-то новый низкоуровневый язык взлетит.

>что выведет эта программа и попробуй объяснить почему
В прошлом треде писали, что одинарные кавычки это типо макро для int значения или как-то так. То есть вызовется функция fun(int a). А может и не поэтому, я не знаю короче.

Ответы198586

29 мая, 00:26 70 1198586

>>1198577
> что одинарные кавычки это типо макро для int
NYET. Одинарные кавычки - это тип char. И это отдельный, третий тип для символов. Он может быть как unsigned, так и signed в зависимости от настроек конпелятора. Поскольку типы signed/unsigned char и char разные, компилятор выбирает самое простое преобразование, а именно char -> int.

Ответы198589

29 мая, 00:30 71 1198589

>>1198586
> char -> int
И, кстати, выбирается int, а не unsigned int, чтобы сохранить знак, если char в настройках конпелятора выставлен со знаком.

Ответы198623

29 мая, 04:54 72 1198623

>>1198589
>И, кстати, выбирается int, а не unsigned int, чтобы сохранить знак, если char в настройках конпелятора выставлен со знаком.
Не гони, для беззнакового char (-funsigned-char) тоже выбирается int.
Всё, что влезает в int — промоутится в int.

29 мая, 04:55 73 1198624

>>1198560
>Вот например угадай, что выведет эта программа и попробуй объяснить почему:
КАК СЛОЖНА!!!

Ответы198626

29 мая, 04:56 74 1198625

>>1198499
При перегоне ASCII в CSV без COM правда не обойтись?

Ответы198627198639198660

29 мая, 05:02 75 1198626

>>1198624
Это ещё не сложно. Вот пример посложнее:

auto vec = std::vector<std::string>{0};
std::cout << vec.size() << std::endl;
std::cout << vec[0] << std::endl;

Ответы198658198664

29 мая, 05:06 76 1198627

>>1198625
Может ему хотелось автоматом оформить красивенько документ(ы). Тут простым CSV не обойтись.

29 мая, 06:39 77 1198639

>>1198625
Можно было обойтись C++\CLI со стандартными дотнетовскими классами для экселя. COM все таки старье.

29 мая, 08:37 78 1198658

>>1198626
Ничего и не выведет?

29 мая, 08:45 79 1198660

>>1198625
А потом выясняется, что Excel разделитель между полями берёт из настроек локали, и на половине машин твой csv надо не открывать, а импортить.

29 мая, 09:01 80 1198663

>>1198560
вангую инт

29 мая, 09:04 81 1198664

>>1198626
вангую 1 и пустую строку.

Ответы198668198670

29 мая, 09:09 82 1198668

>>1198664
nullref, логично

Ответы198674

29 мая, 09:14 83 1198670

>>1198664
На самом деле вылетит эксепшен из конструктора std string

Ответы198674

29 мая, 09:16 84 1198673

Привет, анон. Тема такая, поступаю в вуз и хочу летом за 2 месяца поиграться с крестами, написать что-нибудь на QT. Знаю кресты на уроне написания в процедурке простых олимпиадных задачек(ООП, Поинтеры, темплейты и прочее вообще не шарю). Что почитать(А лучше посмотреть), чтобы быстро вкатиться и написать что-то на QT. Желательно с упражнениями. P.S Знаю немного JS, прошлым летом писал сайтики. Спасибо.

Ответы198675198701199638

29 мая, 09:18 85 1198674

>>1198670
угу >>1198668

29 мая, 09:21 86 1198675

>>1198673
> А лучше посмотреть
Кек. Какое ебаное поколение растет. Ютуб смотри, где еще ты найдешь братьев по разуму.

Ответы198701

29 мая, 10:25 87 1198701

>>1198675
Ты не прав, если считаешь, что на ютубе нельзя найти полноценных гайдов. Конечно они не будут такими полными как хорошая книга или черновик стандарта, но для начала сойдет.
>>1198673
Но я тебе рекомендую все таки книжку из шапки. В темплейты пока особо лезть не надо.

Ответы200315

29 мая, 16:09 88 1198896

Двач-помогач подсоби. Пытаюсь решать на кодворсе задачку. Условие неважно, важно следующее. Есть класс

struct PokerHand {
PokerHand (const char pokerhand) {}
};

И есть функция

Result compare (const PokerHand &player, const PokerHand &opponent)

Как мне обращаясь в этой функции к player (или opponent) выдрать из него constchar pokerhand, с помощью которого объект был определен?

Ответы198897198901

29 мая, 16:14 89 1198897

>>1198896
Никак. Полей в структуре-то нет. А указатель pokerhand либо будет удалён вызывающим кодом, либо останется висеть где-то там в памяти.

Ответы198901

29 мая, 16:19 90 1198901

>>1198896
>>1198897
Сорян, ступил. Забыл, что кодварс допускает добавление полей

30 мая, 15:39 91 1199440

Design View в формах VS 2017 НЕ РАБОТАЕТ. Приходится устанавливать VS 2013.

30 мая, 20:30 92 1199620

Как передать int a[5][3] в void( int) ?

Ответы199622199629199657199769

30 мая, 20:31 93 1199622

>>1199620
void( int)

Ответы199623

30 мая, 20:31 94 1199623

>>1199622
void( ^^int), где ^ = звёздочка.

Ответы199625

30 мая, 20:32 95 1199625

>>1199623
void(int^^)

30 мая, 20:38 96 1199629

>>1199620
Нахуя вы ему сишное говно советуете. Вот как делают профи:

template<typename T, size_t A, size_t B>
void takeIt(T(&arr)[A]) {
// arr - массив
// A, B - его размеры
}

https://ideone.com/tgXycV

Ответы199632199633199767203020

30 мая, 20:39 97 1199632

>>1199629
Лол, вакаба съела вторые квадратные скобки. Смотри кароч код в ideone.

Ответы199633

30 мая, 20:41 98 1199633

>>1199632
>>1199629
А без читерства?

Ответы199634199769

30 мая, 20:41 99 1199634

>>1199633
С каких пор шаблоны стали читерством? Ну можешь передавать в виде указателя, проблем-то.

Ответы199635199636199637

30 мая, 20:42 100 1199635

>>1199634
>С каких пор шаблоны стали читерством?
Выразился так, да слишком высокоуровнево, хз.
>>1199634
>Ну можешь передавать в виде указателя
Так не могу! Почему и вопрос возник.

30 мая, 20:44 101 1199636

>>1199634
По идее int^^ и int[][] должны быть одной хуйнёй. Но нет. Понимаешь?

Ответы199768203051

30 мая, 20:45 102 1199637

>>1199634
Причём в Си вроде работает. Наёбка какая-то.

Ответы199640199646199648

30 мая, 20:45 103 1199638

>>1198673
https://www.youtube.com/watch?v=g6fw5n9Gt-E&list=PL0lO_mIqDDFUaZe7H9kY6vWbSVrtwFv4M

первая ссылка в гугле по вкладке "видео"

30 мая, 20:47 104 1199640

>>1199637
Ну так используй reinterpret_cast и не еби мозг.

30 мая, 20:56 105 1199646

>>1199637
В си конпелятор скорее всего выдаёт варнинг, а вот в C++ уже ошибку. Судя по всему кроме шаблонов тут никак. Пиши абстракцию над массивом и не еби себе мозг.

30 мая, 21:01 106 1199648

>>1199637
Впрочем если совсем хочется, то можно сделать так: https://ideone.com/Q6E0Vx

Ответы199656

30 мая, 21:10 107 1199656

>>1199648
>https://ideone.com/Q6E0Vx
Чётко. Мерси. Я понимаю, что это вырвиглаз и так писать не нужно, когда есть шаблоны, можно обёртку намутить и тп, но мне просто хотелось инициализировать массив для отладки там, и городить ещё чего-то, затем удалять не хотелось. Спасибо.

Ответы199659

30 мая, 21:11 108 1199657

>>1199620
Void(array<array<int, 5>,3>)

Ответы199660

30 мая, 21:11 109 1199659

>>1199656
>инициализировать массив
массивом

30 мая, 21:12 110 1199660

>>1199657
Только наоборот внутри 3, а снаружи 5.

Ответы199664

30 мая, 21:14 111 1199664

>>1199660
Я заранее не знаю размера. Я же не могу в определении так сделать(?):
void(array<array<int, n>,m>, int n, int m)
А вот вариант выше заебись:
void takeIt(void^ arg, int m) {
auto arr = reinterpret_cast<int(^)[m]>(arg);
std::cout << arr[1][2];
}

Ответы199666199667199670199769

30 мая, 21:16 112 1199666

>>1199664
>заранее не знаю
В смысле я-то знаю, передать его как параметр не выходит, вы поняли.

30 мая, 21:17 113 1199667

>>1199664
> reinterpret_cast<int(^)[m]>(arg);
> error: non-constant expression as array bound
Не взлетит. m должен будет быть шаблонным параметром.
template<size_t m>
void takeIt(void^ arg) {
auto arr = reinterpret_cast<int(^)[m]>(arg);
std::cout << arr[1][2];
}

Ответы199669

30 мая, 21:20 114 1199669

>>1199667
Успешно#stdin #stdout 0s 4532KB
6
Успешно#stdin #stdout 0s 4392KB
6
https://ideone.com/1eqMD0
Взлетело же.

Ответы199672199758

30 мая, 21:21 115 1199670

>>1199664
>Я заранее не знаю размера
Void (vector<vector <int>>)
Все велосипеды изобретены задолго до вас

Ответы199673

30 мая, 21:22 116 1199672

>>1199669
На msvc отказался работать. Возможно расширение конпелятора.

30 мая, 21:23 117 1199673

>>1199670
Не думай, что ты умнее всех, заебал. Инициализируй вектор вот так vector = {{1, 2, 3}, {4, 5, 6}};

Ответы199675

30 мая, 21:24 118 1199675

>>1199673
Ок, страдаете дальше

Ответы199677

30 мая, 21:27 119 1199677

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

Ответы199682199691

30 мая, 21:33 120 1199682

>>1199677
Сделай одномерный массив и не еби мозги.

30 мая, 21:46 121 1199691

>>1199677
Ты векторы что-ли инициализировать не умеешь?
Vector<int> a; a. Resize(5,666);
Vector<vector <int>> b; b. Resize (3,a);

Ответы199724

30 мая, 22:34 122 1199724

>>1199691
Там конкретное значение 10 на 10 таблица с числами.

31 мая, 00:05 123 1199758

>>1199669
>Взлетело же.
VLA в C++ — это расширение g++

31 мая, 00:30 124 1199767

>>1199629
профи обернут не несущий никакой смысловой нагрузки int a[5][3] в класс, а далее будут работать с объектами этого класса
блядь

31 мая, 00:32 125 1199768

>>1199636
Не должны быть.

31 мая, 00:35 126 1199769

>>1199620
Никак.
>>1199633
>>1199664
Возьми уже https://www.boost.org/doc/libs/1_67_0/libs/multi_array/doc/user.html

31 мая, 00:36 127 1199770

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

Ответы199771199772199948

31 мая, 00:37 128 1199771

>>1199770
>хозяин
фикс

31 мая, 00:38 129 1199772

>>1199770
RAII уничтожаются. В это их весь смысл. А остальное использовать вообще не надо, если только ты не взаимодействуешь с сишными библиотеками или пишешь низкоуровневый особо пирформансный код.

Ответы199777

31 мая, 00:47 130 1199777

>>1199772
Надо нинадо, нужно нинужно, я вроде не в /s/. И я что-то я не вижу что-бы что-то по выходу из областей видимости уничтожалось, всё пишется в новые ячейки - https://godbolt.org/g/9Bji7n. Поэтому у меня прямой вопрос к шарящим, почему хозяин запретил?

Ответы199779199780

31 мая, 00:49 131 1199779

>>1199777
> не вижу что-бы что-то по выходу из областей видимости уничтожалось
> -O0
Ты оптимизацию включи, ага. Хотя видимо ты просто троллешь.

Ответы199784

31 мая, 00:50 132 1199780

>>1199777
>https://godbolt.org/g/9Bji7n
>-O0
Low quality bait.

Ответы199784

31 мая, 00:53 133 1199784

>>1199780
>>1199779
Ну так с оптимизацией он вообще нихуя не покажет, а по сути он и с оптимизацией не перезаписывает старые ячейки.

Ответы199785

31 мая, 00:55 134 1199785

>>1199784
> а по сути
Это астральными путями пообщался с конпелятором и он тебе рассказал? Он вообще эти переменные может хоть в регистры засунуть. У него полная свобода делать с ними что угодно.

Ответы199787

31 мая, 00:59 135 1199787

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

Ответы199789

31 мая, 01:02 136 1199789

>>1199787
Правильно говорить папа бьярне. А вообще из распространённых языков, мне только JS вспоминается, где var'ы кладут толстый на области видимости (да и то в es6 добавили let'ы которые области видимости уже соблюдают). Видимо ты просто поехавший.

31 мая, 14:14 137 1199948

>>1199770
>не уничтожаются
А зачем по-твоему нужны умные указатели?

Ответы199953

31 мая, 14:23 138 1199953

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

Ответы199994

31 мая, 16:21 139 1199994

>>1199953
Что за хозяин? Ты шизик что ли?

31 мая, 16:26 140 1199997

Нужна помощь, вот пример кода из книги Страуструпа:

>const int x = 17;
>constexpr double max1 = square(x);
Функция square:
>constexpr double square(double x) { return x∗x; }

Он компилируется gcc с++11, все прекрасно. Разумеется, меня посетила мысль, что от смены типа dmv на double ничего поменяться не должно, но хуй там плавал.

>const double x = 17;
>constexpr double max1 = square(x);
>error: the value of ‘x’ is not usable in a constant expression

Как? Почему? То есть в "константности" int он уверен, а в double нет?

Ответы200003200030200284

31 мая, 16:41 141 1200003

>>1199997
В msvc у меня square(x) подчеркивает красным, но код компилируется и работает. Я хз почему так. Ждем ответа от экспертов в треде.

31 мая, 17:29 142 1200030

>>1199997
Версию gcc ты нам конечно не скажешь.

Ответы200080

31 мая, 17:33 143 1200031

> То есть в "константности" int он уверен, а в double нет?
Угу, по той же причине числа с плавающей точкой не допускаются в аргументы шаблона. Поскольку не факт, что a == b в примере ниже
double a = 1/3.;
double b = 2/6.;

да и вообще сравнение чисел с плавающей точкой тот ещё геморрой. Нахуй.

Ответы200081200273

31 мая, 18:36 144 1200080

>>1200030
gcc version 5.4.0

31 мая, 18:38 145 1200081

>>1200031
Если сделать так, то все начинает работать.
>constexpr double x = 17;
И я перестаю что-либо понимать.

Ответы200084

31 мая, 18:42 146 1200084

>>1200081
Эквивалентность const и constexpt для целочисленных константных типов, заданных литералом - это костыль из времён C++98, чтобы можно было задавать размер массива константой:

const int S = 18;
int a = { 0 };

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

Ответы200088

31 мая, 18:45 147 1200088

>>1200084
Макаба сожрала квадратные скобки, вот так: https://pastebin.com/BDpjXdE7

31 мая, 21:46 148 1200273

>>1200031
>> То есть в "константности" int он уверен, а в double нет?
>Угу, по той же причине числа с плавающей точкой не допускаются в аргументы шаблона.
Но в constexpr допускаются.

Ответы200299

31 мая, 22:01 149 1200284

>>1199997
https://ideone.com/ALIKPc

31 мая, 22:03 150 1200285

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

31 мая, 22:20 151 1200299

>>1200273
Потому что в constexpr ты можешь написать свою функцию для сравнения с необходимой точностью. В шаблонах - нет.

31 мая, 22:47 152 1200315

>>1198701
Он прав. И ты сам ответил, почему. "Для начала" != ""полноценный гайд"" (я даже двойными скобками отметил этот ебаный пиздец, которым ты именуешь последовательность действий для макак, считая ее ниибацо раскрытием темы). Да и как правило весь ютубный мусор запутывает и сбивает с толку. Да как и большинство книг. Но хорошие книги объясняют правильно и набело, а ютуб каналов таких нет, везде какая-то херня, куда ни ткни.

Ответы200357

1 июня, 00:56 153 1200357

>>1200315
на ютуб выкладывают видео с cppcon, плюс с русскоязычных конференций

Ответы200464

1 июня, 04:36 154 1200383

GetLastInputInfo дает значение координат указателя мыши. Как сделать чтобы функция давала значения постоянно (а не один раз) при появлении нового значения (перемещения указателя)?

Ответы200414

1 июня, 08:47 155 1200414

>>1200383
Опрашивать в цикле. Если это фреймворк там скорее всего навешивается обработчик эвента.

Ответы200416

105 Кб, 1024x683
1 июня, 09:17 156 1200416

>>1200414
>Опрашивать в цикле.

Ответы200421

1 июня, 09:43 157 1200421

>>1200416
>пук

1 июня, 11:13 158 1200464

>>1200357
Ну это видео неофиты не осилят, да и многовато там мусора для них вперемешку с полезной инфой.

1 июня, 11:46 159 1200479

Можно ли в одном проекте часть либ линковать статически, а часть динамически? Если да, то поделитесь скриптом для cmake

Ответы200484

1 июня, 11:58 160 1200484

>>1200479
> Можно ли в одном проекте часть либ линковать статически, а часть динамически?
Если либы используют разную линковку рантайма и ты передаёшь указатели между ними, то жди проблем.

186 Кб, 500x500
1 июня, 16:18 161 1200705

Сап. Помогите начинающему со списками, только вкатываюсь в них. Имеется https://pastebin.com/Jq6RHZv7 . Задание: убрать повторяющиеся элементы в группах чисел. То есть если есть 1 1 2 2 2 3 3 нужно вывести 1 2 3.
В коде есть функция udalenie, в ней я ифаю (ptr2->info==ptr2->next->info) если всё окей, то free ptr2 и прыгаю на через одно число. Но почему-то ничего не работает. Хелп.

Ответы200714200718200720200841

1 июня, 16:26 162 1200714

>>1200705
>https://pastebin.com/Jq6RHZv7
ты зачем с си кодом тут в пласплас тред лезешь?

1 июня, 16:30 163 1200718

>>1200705
c++ code

#include <iostream>
#include <list>

int main() {
std::list<int> mylist{1, 1, 2, 2, 2, 3, 3};
for (auto& i : mylist) {
std::cout << i << ' ';
}
std::cout << std::endl;

mylist.unique();
for (auto& i : mylist) {
std::cout << i << ' ';
}
return 1;
}

Ответы200731

1 июня, 16:32 164 1200720

>>1200705
Во-первых используй delete вместо free(). Запомни new/delete, malloc/free, не смешивай их. Во-вторых, вместо макроса NULL используй nullptr.

1 июня, 16:43 165 1200731

>>1200718
>return 1;

1 июня, 17:57 166 1200772

Отвечу сюда, т.к. бомбануло а тот тред закрыт:
>>1200725
Вот бесят такие мамкины умники, думающие за других, хотя у самих опыта никакого нет. В 99.99999999% случаев инлайн ускоряет код, иногда в разы/десятки раз. Кто-то когда-то специально написал такой код, где это не выполняется, и вот, теперь все это повторяют, мол компилятор лучше разберется. Да не лучше ваш тупой компилятор разберется, не работают эти эвристики. Всегда надо инлайнить в критическом коде, вот вам работающая эвристика, дарю.

Ответы200812200850

1 июня, 18:50 167 1200812

>>1200772
Вот только инлайн это только совет компилятора, он сам думает инлайнить или нет. Иначе ты наинайлешь больше кеша и кирдык твоим оптимизациям

1 июня, 19:36 168 1200841

>>1200705
Я тоже ньюфаг, я вот так сделал и вроде работает https://ideone.com/iyjj3H
Но я не уверен с удалением с heap'а, удаляется ли оно действительно или нужен указатель на указатель (две звездочки). Пусть эксперты поправят.

Ответы201053

1 июня, 19:47 169 1200850

>>1200772
Не нравится: сделай свой вариант макроса FORCE_INLINE для поддерживаемых компиляторов, где будут использоваться проприетарные атрибуты, которые конпелятор уже не будет игнорировать. У всех современных конпеляторов такие есть.

Ответы200881

1 июня, 20:29 170 1200881

>>1200850
Ну в gcc и так есть __attribute__((always_inline)). Меня само рассуждение покоробило, что мол компилятор лучше разберется, такое мнение видел неоднократно. Он разберется лучше чем Вася с laba1.cpp, но в реальном коде всегда нужно руками инлайнить. И если бы такой возможности не было, то писать высокопроизводительный код было бы невозможно.

Ответы200954201058

1 июня, 21:57 171 1200954

>>1200881
Ну это проблема не компилятора, а стандарта. В расте, например, если сказано инлайн, значит инлайн и никаких но. А в C++ никаких гарантий нет.

1 июня, 23:30 172 1201053

>>1200841
Никто мне не скажет, правильно ли я сделал?

1 июня, 23:37 173 1201058

>>1200881
Профилирование уже сделал?

1 июня, 23:52 174 1201067

Здесь же много диванных экспертов? Я тут написал кастомный аллокатор для игрового движка. Оцените вообще идею, ну и реализацию. Аллокатор представляет собой односвязный список, ноды держат N байт каждая. Аллокация -- выдергивание первой ноды списка, если она есть, либо аллокация новой. Деаллокация -- пуш в начало списка. В игрушке за один фрейм выделяется 10000 нодов, например, а потом куча не трогается вообще, в предположении эквивалентности фреймов. Ну и можно заделать композицию таких аллокаторов вместе со стандартным, чтоб была пушка. Большие дяди так и делают?
мой кот https://github.com/Pearduck/listalloc

Ответы201104201360208740

2 июня, 00:37 175 1201104

>>1201067
Ну ничего революционного ты не изобрёл, скажем так.

Ответы201308

2 июня, 04:09 176 1201195

Двач, помоги. Многого не прошу.
Нужен код для Visual C++ с быстрой сортировкой + выводом времени работы, кол-ва обменов и кол-ва сравнений

Ответы201278201282

2 июня, 11:39 177 1201278

>>1201195
Ну раз нужен так напиши. Тыжпрограммист! А вообще в гугле этого говна под завязку.

2 июня, 11:41 178 1201282

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

2 июня, 12:03 179 1201297

>>1196791 (OP)
В QT нет поддержки pdf и svg?

Ответы201346

2 июня, 12:35 180 1201308

>>1201104
Я понимаю, последний вопрос к этому был. Я больше по реализации, как вообще, адекватно?

2 июня, 13:28 181 1201346

>>1201297
Про pdf не скажу, но svg точно умеет.

2 июня, 13:47 182 1201360

>>1201067
Прочитав по диагонали пополам, вроде нормально. Но:
1) Не многопоточно (но, может, это в твоём случае и не нужно)
2) Нет локальности между нодами.
Я бы выделял по несколько страниц сразу и ноды размещал в них.

Или вообще самый простой вариант, если юзкейс позволяет: выделить овердохрена страниц с помощью VirtualAlloc/mmap, и писать в них. Так как страницы физически не выделятся, пока к ним не будет обращения (хотя на линуксе это ещё от настроек зависит), лишней памяти потреблятся не будет.

Ответы201364201367

2 июня, 13:50 183 1201364

>>1201360
И сразу тогда такой вопрос -- как вкатиться в многопоточность? Что написать для полного осознания проблемы?

Ответы201371

2 июня, 13:53 184 1201367

>>1201360
Насчет локальности ещё. Думаю, можно просто этот аллокатор обернуть в другой, который будет как раз по страницам выделять, получится более гибко.

14 Кб, 207x300
2 июня, 13:56 185 1201371

>>1201364

Ответы201385201401

2 июня, 14:14 186 1201385

>>1201371
Не люблю прогу по книгам учить. Медленно и не так затягивает, как пилить что-нибудь работающее. Я люблю ставить себе тяжелые задачи, явно демонстрирующие необходимость тех или иных действий. По моему скромному мнению, книгу читать стоит, когда есть представление о проблеме.

Ответы201405

2 июня, 14:23 187 1201401

>>1201371
И всё-таки я начал её читать. Годно, спасибо.

2 июня, 14:27 188 1201405

>>1201385
Ты не можешь себе задачу придумать?
Сделай, например, параллельное скачивание пикч с двача/инстаграма/вк.

Ответы201419

2 июня, 14:36 189 1201419

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

Ответы201422

2 июня, 14:44 190 1201422

>>1201419
И в итоге не доделаешь до конца т.к. постоянно будет чего-то не хватать.

Ответы201431

2 июня, 14:53 191 1201431

>>1201422
Зато поем говна.

2 июня, 16:14 192 1201483

Блядь, плюсы охуенный язык. Ухх бля. Ухх бля. Что будет, если всю жизнь быть плюсовиком?

Ответы201495201517

2 июня, 16:39 193 1201495

>>1201483
Либо прогнивание в каком-нибудь сраном нии где просто никто других языков не знает и плюсы пишутся, как будто сейчас 1989, либо 300к в наносекунду, если тебе повезло и ты гуру своего домена. Ничего посередине.

Ответы201503

2 июня, 17:14 194 1201503

>>1201495
Поэтому легче идти в си или питон.

2 июня, 17:33 195 1201517

>>1201483
Написал свой первый хелло ворлд?

2 июня, 18:43 196 1201563

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

Ответы201604201605208726

2 июня, 19:08 197 1201589

Крч, нихуя не понимаю winapi
Есть ли книга, где объяснения, как для тупых ?

Ответы201594201602201695

2 июня, 19:14 198 1201594

>>1201589
Петцольд - Программирование для Windows 95. А вообще:
>winapi
>2018
Ну ты понел

Ответы201743

2 июня, 19:23 199 1201602

>>1201589
книжки рихтера топчик

2 июня, 19:25 200 1201604

>>1201563
>отсюда бы утекла в ру-коммьюнити
>отсюда
ты физику чтоли в школе не учил?
как может что то утечь из самой глубокой ямы,

2 июня, 19:26 201 1201605

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

Ответы201621

2 июня, 19:32 202 1201621

>>1201605
Ну вот смотри, есть золотая жила, где из-за отсутсвия пидорашек русскоязычных высокая оплата и хай-деманд. Набегут тысячи миллионы пидорашек и будут работать за 500р/проект, хотя я беру до 10k. Все это из-за неизвестности и отсутсвии в СНГ хоть-какой то так скажем ниши. Но обучиться может каждый с уровень инглиша на разговорном уровне. Я все сказал.

Ответы201702202379

2 июня, 19:33 203 1201623

10к в $$$ , если что.

Ответы201636201700

2 июня, 19:35 204 1201626

как в интерфейсе vs2017/с помощью cl из vs developer tools скомпилировать только один объектник из единственного .срр файла и слинковать статическую либу из уже имеющихся скомпилированных?

57 Кб, 564x766
2 июня, 19:47 205 1201636

>>1201623

2 июня, 21:18 206 1201695

>>1201589
http://www.winprog.org/tutorial/start.html

2 июня, 21:23 207 1201700

>>1201623
грязь? если на россию то нахуй не нужно - садят на четверть века

2 июня, 21:25 208 1201702

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

2 июня, 23:25 209 1201743

>>1201594
А что ты предлогаешь в 2018 для C++?

Ответы201750

2 июня, 23:39 210 1201750

>>1201743
не писать приложения с GUI

Ответы201752201764201796201798

73 Кб, 1052x438
2 июня, 23:46 211 1201752

>>1201750
Двачую этого.

Кто нибудь скажет нахуя это происходит? Я же либу импортнул, всё как в мануале делают. А тут вот...

Ответы201755201764201769213014

2 июня, 23:49 212 1201755

>>1201752
Лол. Я понял что не так. Но интересно, кто-то найдет?)))0

3 июня, 00:12 213 1201764

>>1201750
А с чем тогда писать?

>>1201752
Qt с js, это что ещё за хуйня?

Ответы201765201775

3 июня, 00:13 214 1201765

>>1201764
Ну с питухоном жи есть pyqt, так и тут.

3 июня, 00:16 215 1201769

>>1201752
Когда понял что это, блевать захотелось. Это не тред кьюта если что.

Ответы201775

3 июня, 00:26 216 1201775

Правильный ответ - import QtQuick.Controls
Если пишешь import QtQuick.Controls 1.4 - выводит старый бар
Пишешь import QtQuick.Controls 2.3 - выводит новомодный
Пишешь import QtQuick.Controls 2.2 - сосёшь хуй.

>>1201769
А чего это тред? Чистого C++ без буста и qt?

>>1201764
Это чисто "фронтэнд" логика. Бэк на крестах.

Ответы202218

3 июня, 02:10 217 1201796

>>1201750
https://www.youtube.com/watch?v=QCnyqMWPkQk

Ответы201804201805

3 июня, 02:11 218 1201797

https://www.daniweb.com/programming/software-development/threads/77173/c-gui-graphical-user-interface-for-beginners

3 июня, 02:23 219 1201798

>>1201750
Пизда, 80% софта на с++ с ui сделано, хмммм что-то сдается мне что ты тралл.

Ответы201878

3 июня, 02:51 220 1201804

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

3 июня, 03:20 221 1201805

>>1201796
CLR это же .NET

3 июня, 11:59 222 1201878

>>1201798
имхо десктоп - мёртвое направление разработки за редкими исключениями. сделав веб интерфейс ты охватишь гораздо больше пользователей из за независимости от ОС и от железа.

Ответы201905202061202220

3 июня, 12:42 223 1201905

>>1201878
Qt как раз в веб продвигают

81 Кб, 478x895
3 июня, 16:02 224 1202035

Что может произойти, чтобы вывод данных в консоль и вывод данных в файл друг от друга так отличались?

Ответы202044202049

14 Кб, 685x131
3 июня, 16:14 225 1202044

>>1202035
В дебаг-режиме внезапно возникает исключение, а во время работы программы – нет. try/catch исключение не поймал. Почему работа программы просто тихо прекращается, ещё и к тому же в зависимости от потока вывода в разных местах, непонятно.

Ответы202049

3 июня, 16:31 226 1202049

>>1202035
>>1202044
Извините, ретард, пытался по null-указателю взять информацию

3 июня, 17:07 227 1202061

>>1201878
Пиздец, ты посмотри на количество софта, написанного на с++.

Ответы202084

3 июня, 18:12 228 1202084

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

Ответы202085

3 июня, 18:15 229 1202085

>>1202084
Если честно, я просто не представляю, как люди пользуются любыми веб-приложениями. Либо я вырос на десктопных, не тормозящих приложениях, и такой требовательный, либо что-то не так с моим софтом, либо люди не знают, каким вообще приложение должно быть.

Вот, скажем, открываете вы документ в Google Docs. Открываете страницу, начинаете набирать, и понимаете, что полностью страница еще не загрузилась, и джаваскрипт не успел перевести фокус на поле ввода. Первые три набранные буквы пропали.
Это просто первая мелочь, пришедшая мне в голову, но она для меня столько значит, что сразу ставит крест на Google Docs.
Или, например, нажимаете во многих веб-приложениях правую кнопку мыши на каком-нибудь объекте, ожидая, что вы получите меню объекта, и видите там «назад», «вперед», «сохранить страницу», и так далее. Понимаю, что нажатие правой кнопки мыши можно перехватывать, как это делает тот же Google Docs, но когда ты такое видишь в, казалось бы, десктопном приложении (написанном на node.js, который тащит с собой chrome.exe и ffmpeg.dll, и простейшее приложение занимает больше 50 мегабайт в архиве), то это просто неприемлемо.

«Десктопные» приложения Slack, Mattermost, текстовый редактор Atom, который раньше не умел открывать файлы с размером более 2 МБ, а сейчас открывает мегабайтный файл несколько секунд — просто какой-то мусор, непонятно, кто в здравом уме будет пользоваться такими программами, пока есть альтернативы в виде нормальных десктопных приложений.

Ответы202114202169

3 июня, 20:09 230 1202114

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

Ответы202127

3 июня, 20:34 231 1202127

>>1202114
Написана полтора года назад.

3 июня, 21:51 232 1202169

>>1202085
> я вырос на десктопных, не тормозящих приложениях
Эх, вспоминаю все эти "не тормозящие" кады, фотошопы и офисы, как же охуенно было (нет).

3 июня, 23:33 233 1202218

>>1201775
Это тред C++, а не вольных пересказов всех его библиотек на других языках. Не понимаю зачем ты это сюда притащил, если
джаваскриптеры там <-

3 июня, 23:34 234 1202220

>>1201878
Ага, особенно когда сам софт завязан и на ОС и на железо.

4 июня, 00:08 235 1202238

Подскажите новичку, очень хочу изучать с++, есть-ли веб-ресурс с курсами/задачками? Сам знаю прог на уровне студента на паскале, но очень хочу вкатиться! Может, кто-нибудь хочет взять ученика себе, падавана? Буду служить за еду!

Ответы202241202281

4 июня, 00:11 236 1202241

>>1202238
Ты долбоёб? Почему ты игноришь шапку?

Ответы202301

4 июня, 02:00 237 1202281

>>1202238
Всё просто, без задней мысли, берешь и программируешь. Для понимания можно оптимизирующий компилятор написать.

4 июня, 03:03 238 1202301

>>1202241
Там нет именно курсиков и туториолов.

Ответы202361

4 июня, 07:32 239 1202361

>>1202301
Ищи заголовок почти в самом конце "Другие обучающие материалы".
Там будет три ссылки (туториал и курс на stepik).
https://github.com/sosachbot/cppthreadhat/wiki

4 июня, 08:07 240 1202379

>>1201621
crypto """"currencies"""? Нахуй и впизду.

4 июня, 13:42 241 1202546

Помогите с FLTK, которую используют в книге Страуструпа. Слил FLTK, собрал с помощью make install. Когда пытаюсь скомпилировать

#include <FL/Fl.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Window.H>

int main() {
Fl_Window window(200, 200, "Window title");
Fl_Box box(0,0,200,200,"Hey, I mean, Hello, World!");
window.show();
return Fl::run();
}

Выдает ошибку
FL/Fl.H: No such file or directory
#include <FL/Fl.H>

Пытался и через VSCode (inb "поставь Visual Studio" - не хочу забивать гвозди микроскопом) и через обычную командную строку. В VSCode добавлял путь "C:/FLTK/include". Убирал "FL/" в заголовках. Добавлял переменную окружения. Один хуй - та же ошибка. В чем проблема? (Win10)

Ответы202618

4 июня, 13:48 242 1202551

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

Ответы202556202633

4 июня, 13:51 243 1202556

>>1202551 --> >>1197889
Сам после этой книги начал понимать шаблонную магию и даже умеренно использовать её.

4 июня, 16:00 244 1202618

>>1202546
>Пытался и через VSCode
Сам виноват.

4 июня, 16:41 245 1202633

>>1202551
Александреску читай

4 июня, 17:40 246 1202674

Вопрос от совсем зеленого.
Не всегда понимаю как работает составной оператор.
Вот есть условие:
if ((a > b && k > b) || (c > m && f > m)).
В этом случае условие работает так, что сначала проверяется этот блок "(a > b && k > b)", а после (если он не true) (c > m && f > m)?
Или здесь можно написать так, а сам язык разберется за тебя:
if (a > b && k > b || c > m && f > m).
Благодарю за ответ.

Ответы202676202686

4 июня, 17:41 247 1202676

>>1202674
Составное условие*

4 июня, 17:41 248 1202677

Подскажите по винапи. Есть утилита консольная в папке с прогой. Как ее лучше цеплять? ShellExecute или WinExec? И как бы ебашить логирование у утилиты? ( стандартная виндовая консольная).

А еще я ебал опять пилить кому-то интерфейсы на винапи. Пмздец, сука, блядь.

Ответы202684

4 июня, 17:50 249 1202684

>>1202677
>И как бы ебашить логирование у утилиты? ( стандартная виндовая консольная).
имеешь в виду писать из оконного приложения в консоль? есть группа WinAPI методов для работы с консолью. работа заключается примерно в следующем - хватаешь хэндл на активный буфер консоли и через WriteConsole пишешь в него

Ответы202743

4 июня, 17:52 250 1202686

>>1202674
>В этом случае условие работает так, что сначала проверяется этот блок "(a > b && k > b)", а после (если он не true) (c > m && f > m)?
да
>Или здесь можно написать так, а сам язык разберется за тебя:
if (a > b && k > b || c > m && f > m).
в этом случае да, можно. чтобы лучше понимать тебе стоит почитать про логические выражения и их приоритет. конкретно && имеет больший приоритет, чем ||. это как плюс и умножить - сначала умножение, потом сложение

Ответы202692

4 июня, 17:56 251 1202692

>>1202686
Про приоритет я читал где-то, но если будет пример из типа:
if (a>b && k >b && s<k && m>f).
Тут приоритеты будут равны, то есть здесь надо работать со скобками как в алгебре, да?
if ((a>b && k >b) && (s<k && m>f)).

Ответы202698

4 июня, 18:05 252 1202698

>>1202692
в приведенном тобой примере результат одинаковый в обоих случаях
что больше
1 + 2 + 3 + 4 или (1+2) + (3+4)
?

Ответы202701

4 июня, 18:08 253 1202701

>>1202698
Что-то опять хреновый пример привел. Но суть такова, что сами по себе скобочки будут функционировать и будут более понятны для меня? Cпасибо за ответы!

Ответы202705

4 июня, 18:10 254 1202705

>>1202701
да, скобки меняют приоритет действий.

768 Кб, 961x544
4 июня, 18:12 255 1202707

>>1196791 (OP)
Стоит ли учить c++ после питона ? или лучше дальше дрочить очко синтаксическим сахаром и смотреть аниме ?

Ответы202832

4 июня, 18:47 256 1202743

>>1202684 а если я делаю шеллэкзикьют и там ебану спулинг, так получится?

4 июня, 20:27 257 1202832

>>1202707
второе
специализируйся, епт
чем разбрасываться

4 июня, 23:32 258 1203020

>>1199629
Блять почему оно работает? В функцию же по идеи просто передается указатель на массив без его размеров. Как называется вид такого шаблона?

Ответы203100

5 июня, 00:22 259 1203051

>>1199636
>^^
CLI выйди вон

5 июня, 03:54 260 1203097

>>1197889
Анончек, спасибо за книженцию, очень пиздатая. Можешь подкинуть чего-нибудь >=C++14 для не начинающих?Мейерс естьМного классики есть хорошей, но она вся до одинацатых. Или её тоже стоит почитать?

Ответы203099

5 июня, 04:00 261 1203099

>>1203097
> чего-нибудь >=C++14
Да там по сравнению с 11 ничего такого особенного (по крайней мере, что не описывается а той книге) и не добавили. Легче прочитать всякие блоги о новых фичах и сразу решить что тебе из них нужно.

5 июня, 04:11 262 1203100

>>1203020
Не указатель, а ссылка. При этом ссылка на тип, у которого явно указано, что это 2d массив с известными (шаблонными) значениями. Вот компилятор при вызове функции и заполняет все шаблонные значения T -> int, A -> 5, B -> 3.

Ответы203109

5 июня, 06:38 263 1203109

>>1203100
А как ты мне объяснишь вот это? https://www.ideone.com/LCcSqe Как видишь внутри функции параметр уже не массив, а указатель (Pi это pointer int). К тому же sizeof теперь показывает размер адреса, на который указывает указатель. Но использовать ты его всё равно можешь как массив. Вообще нет разницы что ты объявляешь в параметре, хоть указатель, хоть массив, результат у них одинаковый, что доказывает вторая функция. Да что я это рассказываю, ты и так наверно всё знаешь. Ты мне лучше объясни, где вообще хранится инфа о размере массива, т.е. откуда ее sizeof достает?

Ответы203110

5 июня, 06:48 264 1203110

>>1203109
Ты, видимо не понял. Передача массива по значению - int(a)[] и передача указателя - int(*a) это действительно одно и тоже. А вот передача массива по ссылке int(&a)[N] - это уже совсем другая хуёвина. И только в последнем случае можно (точнее нужно, int(&a)[] не скомпилируется) добавить шаблонный параметр для размера массива.

https://www.ideone.com/7wtqyb

Ответы203112

5 июня, 06:59 265 1203112

>>1203110
Вот именно, что я не понял. Откуда этот ебанный шаблон получает размер массива? Ты же не передаешь его в функцию как дополнительный аргумент, например как func(x, sizeof(x)/sizeof(x[0])), а просто func(x).

Ответы203114203115203116203117

5 июня, 07:15 266 1203114

>>1203112
Именно что передаю, просто во время компиляции. Когда я определяю шаблон я говорю, что переменная a должна быть ссылкой на массив размера N. Просто компилятор вместо N подставляет реальный размер массива при специализации шаблона. Т.е. вызов funcArrayRef(x); аналогичен funcArrayRef<sizeof(x)/sizeof(int)>(x);

5 июня, 07:16 267 1203115

>>1203112
Ну вообще размер хранится в метаданных выделенной для тебя памяти.

5 июня, 07:18 268 1203116

>>1203112
Возможно у тебя путаница с Си где есть VLA. Однако в C++ VLA нету и sizeof(массив) является константой во время компиляции, а значит может использоваться в качестве шаблонного аргумента.

5 июня, 07:20 269 1203117

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

Ответы203118

5 июня, 07:22 270 1203118

>>1203117
> Вроде в 17 добавили подобное
Для функций эта хуйня была всегда. В С++17 добавили ещё и для конструкторов классов.
http://en.cppreference.com/w/cpp/language/template_argument_deduction

52 Кб, 300x435
5 июня, 09:49 271 1203165

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

Ответы203167

5 июня, 09:51 272 1203167

>>1203165
лучше учи C# или какой нибудь современный js-фреймворк

Ответы203168

5 июня, 09:53 273 1203168

>>1203167
Нет. Я хочу быть гейдевом.

Ответы203169

5 июня, 09:55 274 1203169

>>1203168
C# & unity

Ответы203172203174203647204425

5 июня, 10:02 275 1203172

>>1203169
Чому лучше?

Ответы203177

5 июня, 10:02 276 1203173

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

Ответы203174203177203657

5 июня, 10:03 277 1203174

>>1203169
>>1203173

5 июня, 10:08 278 1203177

>>1203172
>>1203173
Unreal&BP
юнити имхо хуже хотя я ничего серьезного в них не делал, но если тебе прямо хочется писать скрипты, вместо того, чтобы разрабатывать игру, то для C# много всяких фреймворков и прочего, позволяющих делать что угодно, и если геймдев не выстрелит, всегда сможешь пойти в бездушный энтерпрайз или фрилансить на коре.
мне кажется, у тебя какое то романтическое заблуждение, что геймдев - это написание кода, когда на самом деле это левел дизайн, моделирование, анимирование, текстурирование и лишь немного скриптов, которые на UE прекрасно пишутся через ВР

Ответы203181

5 июня, 10:21 279 1203181

>>1203177
На чем в UE пишутся скрипты? Или ты имел ввиду под скриптами BP?

Ответы203182

5 июня, 10:24 280 1203182

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

416 Кб, 877x1200
5 июня, 11:15 281 1203194

>>1196791 (OP)
Подскажите, пожалуйста. Я сижу через Вижал Студиа. Что мне надо открыть, чтобы я мог работать с этой книгой? Постоянно выскакивает проблема какая-нибудь. Сейчас класс не читает.

Ответы203196203197203211

5 июня, 11:21 282 1203196

>>1203194
Скрин скидывай

Ответы203200

269 Кб, 1920x1080
5 июня, 11:21 283 1203197

>>1203194
P.S. Sales_item.h Мне как полному нулю очень сложно, а тут в учебнике вообще ерись написана. Мне постоянно приходиться обращаться к кому-нибудь, чтобы мне объяснили задачу.

Ответы203206

5 июня, 11:25 284 1203200

>>1203196
Ты мне подскажешь?

5 июня, 11:35 285 1203206

>>1203197
Я у тебя не вижу заголовочного файла Sales_item.h
Создай его или что бы не ебатся вообще удали.

Ответы203210

247 Кб, 1920x1080
5 июня, 11:41 286 1203210

>>1203206
Мне вот такую надо было написать.

Ответы203218203220

5 июня, 11:41 287 1203211

>>1203194
А вообще если очень сложно с визуалом работать, то скачай для начала лучше DevC++. Там все просто . Но это только на момент обучения.

5 июня, 11:48 288 1203218

>>1203210
У тебя в проекте должен быть файл с расширением .h.
А именно Sales_item.h
Создай его в проекте и впиши туда то что написано в книге. Или читай где его достать и суй в папку с проектом а потом подключай через инклюд.
А вообще вот что посоветую https://stepik.org/lesson/534/step/1?unit=857
Пройди весь урок 1.5. чтобы понять что такое заголовочные файлы обьектные исполняемые и тд и тп.

5 июня, 11:52 289 1203220

>>1203210
Как дила Игоряша?)))

Ответы203221

5 июня, 11:53 290 1203221

>>1203220
Неаааааат, так и знал на двочах задианонят)

Ответы203224

5 июня, 12:00 291 1203224

>>1203221
Ебать ты еще и дотер

Ответы203225203226

5 июня, 12:05 292 1203225

>>1203224
Бывший, молодость и панк-рок

5 июня, 12:15 293 1203226

>>1203224
А как ты это узнал?

Ответы203229

5 июня, 12:18 294 1203229

>>1203226
Ты очень тупой, сразу видно - днотер.

5 июня, 13:55 295 1203287

Я сейчас дописываю программу за одним чуваком, который был невероятным фанатом синглтонов, он понатыкал их просто везде. Особенно меня возмутила его обертка MPI.
К примеру, чтобы узнать номер процесса, необходимо сделать MPI::instance()->rank()
Разве использование статических классов не красивее? жаль в C++ такой концепции нет, как в шарпе
Рейт мейн функцию https://ideone.com/i6QynO (5 строк кода)

Видел на stackoverflow обсуждение (в контексте шарпа) и насколько я понял, синглтоны полезны только если синглтон с наследованием, если экземпляр необходимо передавать как аругмент (нахуя?) или сериализовывать (опять же зачем?)
Какие ещё подводные камни в использовании статических классов?

Ответы203307203395

5 июня, 14:15 296 1203307

>>1203287
Если используешь C++17, можешь упростить код ещё сильнее и будет меньше ебли с .h/.cpp файлами. Ну и конструктор надо бы сделать приватным.

https://ideone.com/gy7JuT

Ответы203397

5 июня, 16:24 297 1203395

>>1203287
>Какие ещё подводные камни в использовании статических классов?
Можно соснуть когда статические классы начинают дергать друг-друга в конструкторе. Сам на такое нарвался. Синглтон Маерса корректно работает в таком случае

5 июня, 16:26 298 1203397

>>1203307
>конструктор надо бы сделать приватным
Наверное, лучше вообще delete конструкторы сделать.

А насчет inline членов надо посмотреть, выглядит как-то непривычно.
Хосподе, сколько же в плюсах ключевых слов стало, ехал inline через decltype(auto), видит в constexpr noexcept.

Ответы203412

5 июня, 16:49 299 1203412

>>1203397
> Наверное, лучше вообще delete конструкторы сделать.
Рекомендуют делать приватным, чтоб сообщение ошибки было понятней (мол запретили создавать объекты), а при delete будет выводится что конструктор не найден: сразу и не поймёшь что оно значит.

5 июня, 23:34 300 1203647

>>1203169
Это говно не является движком.

Ответы203734

6 июня, 00:07 301 1203657

>>1203173
>Тормоза, фризерочки
Ты крузис собрался делать? Если ты делаешь игру в одиночку, у тебя ресурсов хватит максимум на пиксельную хуиту. С трехмеркой требования к ассетам возрастают в разы. Анимацией из двух кадров уже не обойдешься, надо делать скелетку, спрайтами 32х32 тоже, надо рисовать текстуры, настраивать материалы. Это все требует большого опыта, времени и денег, которых у тебя конечно же нет. Кодить 3Д в разы сложнее, даже без учета графики, надо понимать матан: попробуй, например, написать функцию пересечения луча со сферой без гугла. Если хочешь делать игры, начинать с крестов - самое худшее решение.

Ответы203823204426

6 июня, 00:47 302 1203685

>>1197889
В свободном доступе только первое издание нашел.
Поделитесь ссылкой, пожалуйста.

Ответы203757

6 июня, 03:23 303 1203734

>>1203647
ох, ты скозал?

6 июня, 06:52 304 1203757

>>1203685
В утке ~ третья четвёртая ссылка.

6 июня, 10:02 305 1203823

>>1203657
>функцию пересечения луча со сферой
Не уж-то все так плохо? Мне бы хотя бы ОСНОВЫ, книжку, курс по >Кодить 3Д
на русском

А в крузисе хотя бы отчасти понимать исходный код движка. На звание супер специалиста я, конечно же НЕ претендую но нацелен и понимаю, что это ад и пиздец, но также и понимаю что все знать я не могу. Ну а че, кому сейчас легко.
Я уверен что те кто кодит 3д не родились такими, и тоже начинали с рисования условного треугольника в каком-нибудь ОпенДжеЭле.
А плюсы считают некоторые лучшим языком как первым для освоения, и это отчасти понятно т.к. получив в кровавой схватке с самим собой понимания основ назревает вопрос, а нужно ли оно вообще? Дальше идти по пути боли и страданий или стать смузи-питонщиком? Тут то происходит естественный отбор. Чем сложней условия тем крепче шкура, тем ты лучше уже по-умолчанию.

6 июня, 12:05 306 1203882

https://ideone.com/bRYdZ0

В чем собственно говоря проблема. Функция возвращает указатель на элемент в векторе. Вектор в функцию я передаю НЕ по ссылке, то есть создается его копия. В Visual Studio 2015, если я использую функцию authorize с обычным циклом for, то она возвращает какой-то мусор (что логично), а используя range for она почему-то возвращает корректный указатель. Я понимаю, что правильно передавать вектор по ссылке, но блядь, почему это все работает так криво?

Ответы203884203885204023

6 июня, 12:09 307 1203884

>>1203882
Сейчас бы ещё думать почему в одном случае UB ведёт себя так, а в другом иначе.

6 июня, 12:12 308 1203885

>>1203882
И, кстати:
for (auto user : users) {

Здесь (в отличии от обычного цикла) во время каждой итерации создаётся копия user (чтобы не создавалась надо писать auto& или auto&&). Видимо поэтому возвращается указатель на верные данные: потому что стек ниже с ними ещё не успели засрать.

6 июня, 15:02 309 1203959

Если я обучаюсь по 11-й версии, как мне посоветовали в треде, много ли я говна наемся, если работать мне нужно будет на 17?

Ответы203962204006

6 июня, 15:09 310 1203962

>>1203959
Ничего не наешься. В C++17 можно разве что использовать if constexpr вместо некоторых уродливых SFINAE, но я сомневаюсь, что ты будешь обучаться премудростям SFINAE вообще.

Ответы203963

6 июня, 15:12 311 1203963

>>1203962
Спасибо, добродвач!

114 Кб, 1024x1024
6 июня, 15:40 312 1203977

"Everything you ever needed or wanted to know about C++"

6 июня, 16:30 313 1204006

>>1203959
"работать"
ой, бля
говно лепить, ты это хотел сказать?

6 июня, 16:56 314 1204023

>>1203882
какие нахуй циклы в 2к18
ты совсем ебобо?

Ответы204102

6 июня, 18:26 315 1204102

>>1204023
А что не так?

Ответы204246

6 июня, 18:34 316 1204116

Анон, посоветуй годных статей eng/rus по умным указателям, актуальным на 2018. И еще, нужны ли мне они, если я не пишу приложения с GUI?

Ответы204176

561 Кб, 1859x2777
6 июня, 19:35 317 1204176

>>1204116
> Анон, посоветуй годных статей eng/rus по умным указателям, актуальным на 2018.
Пикрелейтед книга. Целая глава посвящена им. Алсо, с C++11 эти указатели особо не изменились.
> И еще, нужны ли мне они, если я не пишу приложения с GUI?
А то! Это наоборот если пишешь, например, на Qt нужно использовать указатели осторожно и с костылями (например писать особые функции, вызывающие deleteLater для удаления QObject'ов).

Ответы204192204245205659

6 июня, 20:03 318 1204192

>>1204176
>Целая глава посвящена им. Алсо, с C++11 эти указатели особо не изменились.
Разве с C++ 11 auto_ptr не стал deprecated? И где то читал, что то ли unique_ptr то ли shared_ptr какашками обмазывали. Я в целом имею небольшое представление что это за умные указатели, мне бы хотелось узнать когда их стоит использовать, в чем pros&cons, и как они изнутри устроены. А то я пишу околосистемную дичь и мне кажется, что я пишу "не на С++, а на С с классами". Попробую поискать ответы на вопросы в книге

Ответы204196204235

6 июня, 20:07 319 1204196

>>1204192
Я имею в виду в 14 и 17 особо не изменились по сравнению с 11. В 14 добавили make_unique, а в 17 удалили auto_ptr.

6 июня, 20:39 320 1204222

РАБотающие аноны, что нужно кроме джентельменских stl/boost на вашей работе? Пошерстил вакансии, в каждой компании своя область с сильно отличающимся стеком. На полюсах сейчас и так нужны одни джедаи пишущие с 85года, поэтому проебаться с областью вкатывания не хочется.

Ответы204231

6 июня, 21:00 321 1204231

>>1204222
Не лезь, нет там вакансий для начинающих, нет их.

Ответы204252

6 июня, 21:05 322 1204235

>>1204192
>как они изнутри устроены
Ну грубо говоря умные указатели это оболочка вокруг сырых указателей. Используются они для того, чтобы избежать утечки памяти. Создаешь класс, внутри конструктора выделяешь память, а в деструкторе освобождаешь. Фишка в том, что когда объект выходит из скоупа, его десктруктор автоматически вызывается и выделеная память освобождается. Самый банальный пример https://ideone.com/4McLZp

Ответы204239

6 июня, 21:17 323 1204239

>>1204235
Только вот самая мякотка умных указателей в том, что они либо только перемещаются (unique_ptr) либо имеют счётчик ссылок (shared_ptr). Твой пример только скрывает реализацию удаления и ничего не говорит о владении указателем, т.е. его можно как копировать так и перемещать, а значит непонятно кто его должен удалять при передаче в качестве аргумента: вызывающая функция или вызываемая.

Ответы204272

6 июня, 21:24 324 1204245

>>1204176
на пике, да, оче годная книга
в отличие от более ранних книг мейерса
imho, канеш

6 июня, 21:25 325 1204246

>>1204102
обход коллекции циклом

6 июня, 21:25 326 1204250

Пиздец, все такие умные. Я только cout hello world написал, тут есть такие же новички, желающие получать по 500к в месяц?

Ответы204307

6 июня, 21:37 327 1204252

>>1204231
Труизм. Попробую через стажировки влезть. Один хуй писать диплом два года на плюсах и небольшой около проект на qt.

6 июня, 22:19 328 1204272

>>1204239
Он только Раи и показал, по факту основной принцип именно в этом.

Ответы204274

Малыш !Freja46eZM 6 июня, 22:19 329 1204273

Пусть есть кусок кода
std::array<int, 2> arr;
int a = arr[1];
Я правильно понимаю, что произойдет оптимизация и адрес второго элемента массива вычислится на этапе компиляции, то есть на асме не будет кода вроде int a = *(arr + 1);

Пусть теперь у меня есть класс
class Foo {
std::array<int, 2> arr;
int get(int k) const { return arr[k]; }
}

Foo foo;
int a = foo.get(1);
Получу ли я эффект как в прошлый раз, если добавлю constexpr к функции get?

Кстати, я и в первом своем утверждении не уверен, как наиболее просто посмотреть ассемблерный код функции/куска программы? CLion

Ответы204286204819

6 июня, 22:20 330 1204274

>>1204272
Раи был и в auto_ptr, что не мешало ему быть говном.

Ответы204283

6 июня, 22:23 331 1204283

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

6 июня, 22:25 332 1204286

>>1204273
> добавлю constexpr к функции get
В данном случае от constexpr не будет толку. Constexpr-функция работает во время компиляции только если возвращаемое значение используется в constexpr-контексте (например присваивается constexpr-переменной или используется как аргумент шаблона), в остальных случаях никаких отличий от простой функции нет. Были предложения по добавлению constexpr-аргументов для функций, но даже к C++20 этого не будет, возможно примут позже.

Если хочешь сделать 100% код, вычисляющийся во время компиляции, используй шаблоны:
template<int k>
int get() const { return arr[k]; }

int a = foo.get<1>();

Ответы204292204294

6 июня, 22:29 333 1204292

>>1204286
> int a = foo.get<1>();
А если быть точнее
int a = foo.template get<1>();

Всё время забываю это ключевое слово добавлять.

6 июня, 22:32 334 1204294

>>1204286
Впрочем в данном случае шаблон не нужен и компилятор сам заинлайнит и соптимизирует функцию. Можешь добавить inline перед функций на всякий случай.

6 июня, 22:40 335 1204307

>>1204250
мы не умные, у нас тупо бекграунд и года задротства
не лезь в кресты в 2к18, рядом php и js треды

Ответы204769

6 июня, 22:42 336 1204311

Хочу написать видеостриминг для себя по фану.
С мобилы видео снимаю, на другую мобилу отдаю.
При этом хочу сохранить архив разговора на серваке.
Как должен выглядить сервер?
Как вообще делать стриминг видео с ffmpeg в С++?

Ответы204340

6 июня, 23:17 337 1204340

>>1204311
Может использовать что-то вроде битторрента?

Ответы204433

7 июня, 00:23 338 1204360

Так для чего нужен inline? Чтобы функции инлайнить или чтобы можно было определенную в одном файле функцию подключать и использовать в разных сурсах?

Ответы204519204817

7 июня, 07:23 339 1204425

>>1203169
Маловато вакансий, а вне мобильных игр тем более. Работал с этим какое-то время, приходилось пердолиться с багами Mono.

7 июня, 07:26 340 1204426

>>1203657
>Если ты делаешь игру в одиночку
Надо быть оторванным от жизни человеком, чтобы порываться делать игры в одиночку. Имхо. А ты его к таким не глядя приписал.
>Кодить 3Д в разы сложнее
Причем тут 3д?

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

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

Ответы204569

7 июня, 07:54 341 1204433

>>1204340
Ну я хочу что то типо скайпа навасянить, для себя чисто

7 июня, 11:24 342 1204519

>>1204360
Чтобы говорить компилятору, что тебе было бы приятно, если бы он вместо вызовы функции встроил код функции.

Ответы204787

7 июня, 12:39 343 1204569

>>1204426
>А ты его к таким не глядя приписал.
Потому что таких вкатывальщиков 99%. И все хотят писать FPS или MMO.
>Причем тут 3д?
Потому что он хочет кодить 3Д в УЕ4, как я понял.
>Там матан уровня первого курса
Вся 3Д графика - это линейка первого курса, только первокурсник хуй чего напишет. Нужен опыт и понимание, как оно работает.
>Я постом выше высказался о шарпе и его протекающих абстракциях
Да это не важно. Важно то, что можно взять юнити, и за выходные слепить игрушку уровня пекмена. С крестами так сделать гораздо труднее, особенно без опыта.

Ответы204666

7 июня, 14:11 344 1204666

>>1204569
>Потому что таких вкатывальщиков 99%
Хуита и пиздёж. Большинство вкатывальщиков в программирование хотят вкатиться в крупную компанию и получать от нее бабло за программирование игры. Ты путаешь со вкатывальщиками в бизнес, но у них же ручки отсохнут программировать.

>Потому что он хочет кодить 3Д в УЕ4, как я понял.
Он хочет писать игру, и разговор о том, делать это на Юнити или Уе. Причем тут вообще 3д? Если он будет делать 3д-игру, он будет пердолиться с трёхмерным представлением вне зависимости от инструмента.

>Вся 3Д графика - это линейка первого курса, только первокурсник хуй чего напишет.
Математические операции над этой графикой - легко напишет. Саму игру со всей обвязкой - да, нужно "понимание" (читай еще один семестр ТПМ ему почитать и будет понимание).

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

Короче, к чему я это всё говорю - программирование игр на юнити это типичный случай протекающей абстракции, когда ты можешь что-то наговнокодить в одно лицо по пошаговым руководствам, но программист на Юнити всё равно должен знать скажем половину того матана, которым ты пугаешь человека который хочет перейти на кресты. Если ты будешь его пугать и он не понюхает этот матан, его просто не возьмут на работу. Или ты отталкиваешься от того что он сейчас прочитает гайд, напишет сам игру, заработает кучу бабла, и советуешь ему юнити для этого?

Ответы204858

7 июня, 15:52 345 1204765

Вы оба правы.

7 июня, 15:53 346 1204769

>>1204307
Я умею 3Д модели делать. Осталось немного с++ поддрочить и буду игрушку пилить. У меня анальный вектор в сторону эстетики направлен, вполне вероятно моя игра выстрелит.

7 июня, 16:02 347 1204785

Я набираю в VSStudio name, подсказывается из дропдауна нужный мне namespace. Какую клавишу нажать, чтобы выбрать нужный мне из дропдауна элементик/слово?

Ответы204825

7 июня, 16:03 348 1204787

>>1204519
cppreference пишет иначе.

7 июня, 16:35 349 1204817

>>1204360
>Так для чего нужен inline?
Для того, чтобы класть на one ODR-rule.

Ответы204870

7 июня, 16:39 350 1204819

>>1204273
>как наиболее просто посмотреть ассемблерный код функции/куска программы?
God Bolt.

7 июня, 16:42 351 1204825

>>1204785
Tab.

7 июня, 17:20 352 1204858

>>1204666
>Хуита и пиздёж
В /gd спроси или на gamedev.ru. Каждый первый школьник хочет делать крузис или доту.
>он будет пердолиться с трёхмерным представлением вне зависимости от инструмента
На юнити вполне можно 2Д делать, на УЕ - затруднительно.
>Математические операции над этой графикой - легко напишет
Ты очень высокого мнения о первокурсниках. Для абсолютного большинства даже выпускников написать скелетную трансформацию - невыполнимая задача. Хотя там тупо умножение матриц. Кватернионы для большинства - вообще темная магия.
>Да можно, конечно, но много ты на ней заработаешь?
Если напишешь flappy bird или samoliotik - заработаешь. А если не заработаешь, получишь навык написания игры. А этому никто и нигде не учит, в отличие от матана. Например, знания как сделать физику платформера, чтобы хорошо игралось, можно получить только практикой. Если он сядет за кресты, он вероятно научится кодить графику, физику, потроха движка, но игры он делать не научится, потому что ни одной законченой игры не сделает, и опыта не приобретет.

7 июня, 17:53 353 1204870

>>1204817
+1

7 июня, 21:11 354 1205025

Почаны, а вот есть вопрос. Как мне сделать что-то типа того?

Govno` pgovno = new Govno;
pgovno->setMocha(42,42, "hui");
Mocha` pmocha = &(Mocha)pgovno->getMocha(42,42);
cout << &pmocha <<endl; //печатает hui
pgovno->setMocha(42,42, "pizda");
cout << &pmocha <<endl; //печатает pizda

Ответы205053

7 июня, 21:47 355 1205050

Кто-нибудь платно тут хочет взять в ученики дауна? Направление - Unreal engine rapid prototyping и Shader graphics programmer. Денег мало, могу брать в процессе ваши фриланс-заказы на себя, свободно владею английским, могу делать вам простые 3Д модели сосать член.

7 июня, 21:54 356 1205053

>>1205025
https://wandbox.org/permlink/Dsp4NRykR6iPoHJW

Ответы205056

7 июня, 21:57 357 1205056

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

Ответы205059205072

7 июня, 22:02 358 1205059

>>1205056
Присвой массив.

Ответы205069

7 июня, 22:15 359 1205069

>>1205059
Не понял.

Ответы205073

7 июня, 22:19 360 1205072

>>1205056
Используй умные указатели.
https://ideone.com/jMPyC4

Ответы205076

7 июня, 22:21 361 1205073

>>1205069
Ты АСД изучал?

Ответы205076

7 июня, 22:22 362 1205076

>>1205072
Да, оно, благодарю.
>>1205073
Нет.

7 июня, 22:26 363 1205077

Анончики, а что это за библиотека такая - MFC?
Есть опыт ковыряния Qt, WxWidgets и прочего. С MFC получится дней за пять разобраться?

Ответы205083

7 июня, 22:44 364 1205083

>>1205077
> Анончики, а что это за библиотека такая - MFC?
Говно мамонта.

Ответы205896

7 июня, 23:35 365 1205140

Философский вопрос, но мучает меня
Как назвать шаблоные названия типов? тип template <typename T....>

Вот есть у меня класс template <typename XUI>, но сам тип XUI не нужен, я потом делаю внутри XUI2 = std::decay_t<XUI>, и вот как адекватно называть? чтобы потом не абасали

Ответы205144

24 Кб, 1291x403
7 июня, 23:40 366 1205144

>>1205140
Да называй как хочешь. Я вообще с подобной хренью не заморачиваюсь.

Ответы205197

8 июня, 01:18 367 1205197

>>1205144
Шаблоны внутри шаблонов, ну еб твою мать. Вот эту книгу советовали >>1197889 , в ней 800 страниц, и это все только о шаблонах, это же ебануться можно. До того как я начал учить C++, я в основном слышал о нем хейт типа, байтоебство, указатели, работа с памятью. Да, после языка с сборщиком мусора это не совсем комфортно и можно накосячить, если нет опыта, но работа с ними как мне кажется практически всегда логична, т.е. причины и последствия понятны. Но вот я думаю, что самый настоящий пиздец в C++, это шаблоны. С ними вообще всякую хуйню можно вытворять. Ну если глянуть на гитхабе какой-нибудь проект, где их по полной используют, то можно нервный срыв получить, пока ты будешь пытаться расшифровать этот спагетти код. Я хуй знает, может я что-то не допонимаю или ума не хватает, но это же какой мозг надо иметь, чтобы серьезно такой код писать?

Ответы205248205514

8 июня, 09:01 368 1205248

>>1205197
> Шаблоны внутри шаблонов
Это не шаблоны, а шаблонные алиасы для типов. Если часто пишешь хуйню вроде std::variant<std::optional<Tazaza>, std::vector<Tbobobo>>, то легче сделать алиас
template<typename TA, typename TB>
using MyType = std::variant<std::optional<TA>, std::vector<TB>>

и писать просто

MyType<Tazaza, Tbobobo>

8 июня, 11:02 369 1205302

Аноны, почему decltype не может вывести тип decltype(int) ? или template <typename T> auto plus() -> decltype(T + T)
Что за кастратсво?

Ответы205309205311205427

8 июня, 11:10 370 1205309

>>1205302
Потому что decltype получает тип из переменной. Тебе же нужна обратная операция: получение (псевдо)переменной из типа. Ключевое слово: std::declval (не забудь подключить хеадер <utility>). Вот твои пример, написанные правильно:

decltype(std::declval<int>())

template <typename T> decltype(std::declval<T>() + std::declval<T>()) plus() { ... }

Ответы205321

8 июня, 11:10 371 1205311

>>1205302
Мб потому - что аргумент decltype выражение или значение? Зачем ты туда типы пихаешь?
http://en.cppreference.com/w/cpp/language/decltype

8 июня, 11:23 372 1205321

>>1205309
ебать костыли

8 июня, 11:34 373 1205327

Анончик, привет
Ты сталкивался когда-нибудь с OCCI?
У меня упорно ResultSet падает на getString() (причем на 17 студии падает из-за строк длиной больше 15 символов, а на 12 студии - на следующем шаге цикла при вызове getString() heap corruption выпадает).
Чё с этим вообще можно сделать? Я-то нашел способ, перевожу все в clob, читаю его в вектор и перевожу в строку, но блядь, это же костыли и ну их нахуй
Подключал через NuGet, instant client ставил не сам (не разобрался нихуя)

8 июня, 13:35 374 1205427

>>1205302
decltype(T a + T b)
Держу в курсе.
Ты не понял, как деклтайп работает.

Ответы205428

8 июня, 13:37 375 1205428

>>1205427
Так делаешь, если у тебя plus имеет сигнатуру plus(T a, T b).

8 июня, 15:35 376 1205514

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

Ответы206075

8 июня, 16:21 377 1205559

Можно на плюсах поменять две переменные любого типа/класса на месте (не создавая новый переменных, не добавляя в стек и тд)? Я хотел вот так:
a = a ^ b;
b = a ^ b;
a = a ^ b;
Где ^ - побитовый xor. Однако чтобы сделать такое для объектов произвольного типа, нужно каким-то образом интерпретировать их как последовательность бит, опять же без доп. памяти.
Мне интересна реализация, про std::swap я знаю.

Ответы205563205595

8 июня, 16:23 378 1205563

>>1205559
Можно перегрузить operator^

Ответы205569

8 июня, 16:25 379 1205569

>>1205563
Я хотел написать универсальную функцию, которая работает для любого класса. По сути своя версия swap.

8 июня, 16:42 380 1205595

>>1205559
>две переменные любого типа/класса на месте (не создавая новый переменных, не добавляя в стек и тд)?

for(i=0;i<sizeof(Object);i++)
{
((uint_8t)&obja)=((uint_8t)&obja)^((uint_8t)&objb);
((uint_8t)&objb)=((uint_8t)&obja)^((uint_8t)&objb);
((uint_8t)&obja)=((uint_8t)&obja)^((uint_8t*)&objb);
}

Ответы205603

8 июня, 16:43 381 1205596

8 июня, 16:43 382 1205597

///*/

8 июня, 16:48 383 1205603

>>1205595
Хуита. Моя версия на шаблонах (оптимизированная для 64-битных систем) круче: https://ideone.com/P1tE8A

Ответы205610205613

8 июня, 16:54 384 1205610

>>1205603
Алсо, на С++17 выглядит даже понятно: https://ideone.com/gcvvsw

8 июня, 16:57 385 1205613

>>1205603
Объясни, как это работает. Идею я понял, а откуда берутся +1, +2, +4 -- нет.

Ответы205616205617205620205756

8 июня, 16:59 386 1205616

>>1205613
Хотя кажется понял

8 июня, 17:00 387 1205617

>>1205613
Смотри C++17 версию. Я просто забыл про if constexpr когда писал код.

Ответы205623

8 июня, 17:02 388 1205620

>>1205613
Это просто оптимизация. Можно xor'ить побайтово, а я сделать что будет xor'ы выполняться с 64-битными значениями, а потом с 32 и с 8 в конце. Можно ещё сильнее ускорить с SIMD, но скорее всего компилятор сделает это и сам.

Ответы205623

8 июня, 17:03 389 1205623

>>1205617
>>1205620
Круто, молодец, но ты все равно использовал стек, потому что считаешь рекурсивно.

Ответы205627

8 июня, 17:05 390 1205627

>>1205623
Алло, это шаблоны. После конпеляции никакого стека не будет, оно всё заинлайнится.

Ответы205629

8 июня, 17:08 391 1205629

>>1205627
Я думал он создает определения функций по одной на каждую специализацию, а потом вызывает как обычно.

Ответы205635

8 июня, 17:15 392 1205634

Как же нахуй все запутано в этой мув-семантике
Вот положим есть класс A и B (B без copy-конструктора)
A { B field_b; }
A(B &&b) : field_b(move(b)) {}
1) Это правильная практика?
2) Что происходит? Я так понял просто копируется весь объект.
3) Теперь с функцией:
f(B &&b) { f(move(b)); }
Я не могу переварить asm-код от gcc, но в этом случае сохраняется ли b на стек при рекурсивном вызове, т.е. плодятся ли копии?

Ответы205638205645

8 июня, 17:16 393 1205635

>>1205629
Ну так шаблоны обычно все встраиваются. В итоге весь этот код превратится в xor'ы нужного количества байтов без каких либо циклов и вызовов функций.

Ответы205649

8 июня, 17:19 394 1205638

>>1205634
Немного не до конца сформулировал 3
Что передается в данном случае? Указатель или весь объект?
Если он передается через регистры, сохраняет ли callee его на стек?

Ответы205641206179

8 июня, 17:20 395 1205641

>>1205638
Опять проебался
caller конечно же

Ответы205652

8 июня, 17:23 396 1205645

>>1205634
move это каст из обычной ссылки в rvalue-reference. Если ты уже принимаешь объект как rvalue, то move делать не нужно.

Ответы205647

8 июня, 17:26 397 1205647

>>1205645
Но ведь внутри A() он уже становится lvalue, и чтобы передать его в B() надо сделать move?

Ответы205653

8 июня, 17:28 398 1205649

36 Кб, 399x45523 Кб, 444x262

>>1205635
Как я и говорил. Впрочем конпеляторы даже xor'ы не генерируют, а тупо меняют местами элементы запихивая их во временные регистры, лол.

8 июня, 17:30 399 1205652

>>1205641
Насчет этого не уверен. Могу только заметить, что в твоем примере писать && необязательно. Если переменная представляет собой rvalue, то при вызове функции ее содержимое автоматически будет перемещено внутрь b. Тогда ты сможешь сделать field_b(move(b)), вновь протолкнув содержимое изначального объекта из b в field_b, то есть копирования снова не будет.

Ответы205653205657205658

8 июня, 17:31 400 1205653

это >>1205652
сюда >>1205647

8 июня, 17:37 401 1205657

>>1205652
Так, уже немного яснее
Я могу принимать B&&, B и const B& и везде поведение будет разное.
Вопрос только какое. Касается рекурсивной передачи через регистры.

Ответы205659

8 июня, 17:38 402 1205658

>>1205652
По той же причине, я думаю, не нужно писать field_b(move(b)) в случае, когда аргумент является B&&. Достаточно написать field_b(b), значение все равно будет перенесено внутрь (хотя реализация мув-конструктора от тебя зависит)

Ответы205665

8 июня, 17:38 403 1205659

>>1205657
Вон книга выше: >>1204176
Там вся эта хуйня в пятой главе разжёвывается.

Ответы205665205732

8 июня, 17:42 404 1205665

>>1205659
Спасибо, пойду читать

>>1205658
Хуй знает, у меня просит copy-конструктор если писать field_b(b)

Ответы205668

8 июня, 17:44 405 1205668

>>1205665
> Хуй знает, у меня просит copy-конструктор если писать field_b(b)
Если у тебя B - шаблонный тип, то B&& - это универсальная ссылка. Чтобы сделать её rvalue-ссылкой надо написать const B&&.

Ответы205702

8 июня, 17:55 406 1205688

Кто-нибудь работает с Unreal или Cryengine на про уровне?

8 июня, 18:01 407 1205702

>>1205668
Нет, B просто объект без copy-конструктора
С const B&& опять же просит copy-конструктор (не важно стоит move или нет)

А теперь такой вопрос к вам
Сколько вам платят за подобную хуйню? Я блядь дерево решил запилить и уже ебусь с этим move. Просто интересно, стоит ли игра свеч? Просто в других языках, даже в C, нету move, ну кроме раста мб. Это просто синтаксический сахар чтобы сложнее было в ногу выстрелить агаканеш или оно реально нормально перемещается?

Ответы205703205731208746

8 июня, 18:02 408 1205703

>>1205702
фикс, B - это класс

8 июня, 18:19 409 1205729

В продолжение беседы про rvalue-reference. Что должно быть выведено на экран? Я думал будет создан дефолтный объект a, потом в ретурне он станет xvalue, поэтому будет перемещен в новый временный объект как A&&, а затем остатки a будут уничтожены в результате выхода, после чего будет конструктор перемещения для b (снова A&&) с последующим уничтожением остатков временного объекта, и наконец уничтожение b. На практике не происходит и половины из этого. Я найду ответы на эти вопросы в книге с птичкой?

https://ideone.com/XD5q9O

Ответы205744

8 июня, 18:20 410 1205731

>>1205702
Тебе move в дереве нужен зачем? Ты динамически выделяешь память, и хочешь оптимизировать копирование?

Ответы205741

8 июня, 18:21 411 1205732

>>1205659
Кстати проблевался с перевода
Зачем писать "псевдоним", "перечисление"?

8 июня, 18:28 412 1205741

>>1205731
Ну например у меня мудреное ленивое дерево и нужно при вставке/поиске рекурсивно я передаю всякие аргументы которые нужны в единичном экземпляре. Вот для этого я и спрашивал про оптимизацию.

Либо если дерево строится на unique_ptr-ах и нужно двигать узлы, опять же рекурсивно, то move будет красиво смотреться.

Ответы205749

8 июня, 18:29 413 1205744

>>1205729
> Что должно быть выведено на экран?
Зависит от стандарта. В C++17 перемещение в данном случае не выполняется вообще. Во всех остальных зависит от конпелятора.

8 июня, 18:31 414 1205749

>>1205741
Это все меня раст испортил, кстати
Там нормально move разжеван
Но как-то неохота писать что-то на расте

8 июня, 18:34 415 1205756

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

Ответы205834

8 июня, 18:39 416 1205768

Эх, видимо придется сейчас окунаться в говно, чтобы в будущем писать на божественном C++17-20

Ответы205789

8 июня, 18:48 417 1205789

>>1205768
11 от 17 ничем не отличается, читай тред.

Ответы205880

8 июня, 19:25 418 1205834

>>1205756
Просто различные спецификации функции в зависимости от размера переменной в битах. Любой объект интерпретируется как череда байт (reintepret_cast из указателя на void в указатель на int). Пока можно, разбиваем на 8-байтные инты, то есть на группы по 64 бита. Остаток делим на меньшие куски и работаем соответственно с интами меньшего размера.

Ответы205863

8 июня, 20:00 419 1205863

>>1205834
Хм, так понятно, спасибо, пойду ещё подумаю немного.

8 июня, 20:28 420 1205880

>>1205789
Странное утверждение. Идиомы меняются. То же компайл-тайм дрочево с 11 на 17 очень сильно изменилось

8 июня, 20:46 421 1205896

>>1205083
А вообще - годная штука? Работаю программистом на машиностроительном заводе. Решили написать собственный CAD под станки. Под это дело нашел библиотеку (OpenCASCADE), но она имеет поддерживаемые биндинги только под Qt у начальника не хватит терпения докрутить Qt под тулчейн Visual Studio и MFC. Я так понимаю, MFC приложения нативно собирается под Windows? Посоветуйте книг/статей по MFC.

Ответы205936206001206085

8 июня, 21:48 422 1205936

>>1205896
Пизда, собирать CAD. Поставь себе Fusion 360 его даже посетитель /b освоит. ЗАчем велосипед?

Ответы205952

8 июня, 22:10 423 1205952

>>1205936
Такая идея руководства. CAD/CAM специально сделанный под линейку оборудования предприятия. Я могу выбирать только средства. И мне хочется программировать на С++ больше, чем на C# (это любимый язык руководителя).

Так это, под MFC есть тюториалы какие-то?

Ответы205963

8 июня, 22:17 424 1205963

>>1205952
Кореша научрук заставил писать на MFC, он дико плювался хоть сам виндузятник. Туторов и гайдов нормальных нет даже на msdn, нашёл только на корейском.

Ответы206173

8 июня, 23:00 425 1206001

>>1205896
>Решили написать собственный CAD под станки.
не надо этого делать, так как годная cad - это десятилетие труда нескольких программистов
достаточно написать плагины под самую распространенную cad в вашем сегменте производимого оборудования

9 июня, 00:42 426 1206068

> MFC
НЕ ЛЕЗЬ ОНА ТЕБЯ СОЖРЁТ

9 июня, 01:05 427 1206075

>>1205514
А не Вандевоорд главный автор?

9 июня, 01:35 428 1206085

>>1205896
MFC это классовая обертка вокгруг WinAPI. Но она в свое время особо не взлетела, лучше сразу пиши на WinAPI, инфы в инете много.

9 июня, 07:06 429 1206104

std::async() – эта штука создает асинхронный тред. Использует ли она при возможности дополнительные ядра/потоки процессора? Или оно работает как в Javascript, где асинхронные функции работают параллельно, но в одном треде не блокируя друг друга, ну как молния на штанах.

Ответы206107209259

9 июня, 07:25 430 1206107

>>1206104
Зависит от переданных флагов первым аргументом. Если передать std::launch::async первым аргументом, то запустится в новом потоке, если std::launch::deferred, то просто будет ленивое синхронное выполнение .По умолчанию может запуститься как угодно.

И это, что в JS принципиально другая система асинхронщины, там промисы никогда не выполняются синхронно, и как минимум пропускают один цикл в цикле событий. В C++ встроенного цикла событий нет. Так что это принципиально разные штуковины.

9 июня, 11:35 431 1206173

>>1205963
>научрук
>туториалов и гайдов
У твоего друга лишняя хромосома? Он знает что такое документация? Он реально вместо того чтобы разобраться в MSDN и написать свою хуйню, добрался до корейских видосиков с пошаговым обучением, чтобы осилить MFC? Ну это пиздец несмотря даже на то что это MFC.

9 июня, 11:42 432 1206179

>>1205638
Кароче ебал я ваш конпелятор и лучше не париться по таким мелочам
caller расширяет стек, просто оставляя там пустое место, и callee его не использует. Кстати это правда не только в случае move, но и в случае когда аргумент не используется после рекурсивного вызова.

Ответы206184206192

9 июня, 11:49 433 1206184

>>1206179
И тогда получается что:
void f(int* a) > void f(std::unique_ptr<int>&& a) > void f(std::unique_ptr<int> a)
По производительности. C опять победил.

Ответы206189

9 июня, 12:09 434 1206189

>>1206184
Поэтому нужен новый тип - rvalue, вместо universal reference. Предлагаю назвать его && const или &&&.

Ответы206196

9 июня, 12:15 435 1206192

>>1206179
>ароче ебал я ваш конпелятор и лучше не париться по таким мелочам
>caller расширяет стек, просто оставляя там пустое место, и callee его не использует.
Это RVO называется, иксперт

>void f(int* a) > void f(std::unique_ptr<int>&& a) > void f(std::unique_ptr<int> a)
Открыл америку. Ты в первом случае хоть память-то выделяешь или со стека указатель передаешь, лол.
>std::unique_ptr<int>
А ты неплох.

Ответы206206

9 июня, 12:17 436 1206196

>>1206189
> rvalue
> Предлагаю назвать его && const или &&&.
Уже есть. Называется const T&&.

Ответы206206

9 июня, 12:32 437 1206206

>>1206196
Нет, это все равно reference. Я скорее имел в виду move-семантику без move-конструкторов.

>>1206192
RVO это вообще не про то, у меня функция возвращает void

> Открыл америку. Ты в первом случае хоть память-то выделяешь или со стека указатель передаешь, лол.
Я нихуя не делаю, я просто функцию скомпилировал. И мне вот не очевидно зачем int* и unique_ptr<int> генерируют разный код, хотя по сути это одно и то же (понятно что втрое это класс с конструктором, но это же минус)

Ответы206209206228

9 июня, 12:37 438 1206209

>>1206206
> Я скорее имел в виду move-семантику без move-конструкторов.
Тогда вам дорога в раст. Там везде по-умолчанию move-семантика.

9 июня, 13:24 439 1206228

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

Ответы206263

9 июня, 14:19 440 1206263

>>1206228
У unique_ptr нет счётчика
Максимум что может быть это указатель на deleter, если он в виде простой функции, а так это ровно один указатель

9 июня, 16:35 441 1206376

Бля, как же заебали заголовочные Circular dependency, уже 3 года программирую на этом языке, всё окей кроме этой проблемы, каждый раз ебёшь мозг где там делать forward declaration, а где включать заголовочный файл. Я в этом нихуя не понимаю, но там какие-то модули планируют вводить, это поможет избавиться от проблем с этими ёбаными заголовками?

Ответы206386206724

9 июня, 16:42 442 1206386

>>1206376
Избавит, но ещё очень не скоро. Стандарт только выйдет к 20 году (возможно ещё позже), пару лет придётся подождать пока конпеляторы его начнут нормально поддерживать (хотя модули многие уже ввели как экспериментальную фичу, м.б. ждать и не придётся) ну и надо будет переделывать кучу кода (объединять .cpp- и .h(pp)-файлы и дописывать что должно быть видимо за их пределами).

Ответы208165

9 июня, 21:47 443 1206675

В 2018-м году с++ актуален только , я подчеркиваю, только в геймдеве. Не учите его, если не планируете вкатываться в геймдев, алсо платят очень хорошо (в РФ/СНГ работы нет вообще), есть лифты.

Ответы206680206873207773

9 июня, 21:55 444 1206680

>>1206675
Не только в геймдеве, в любом мультимедиа реального времени сишка с плюсами или без НЕ имеет каких-то кандидатов на замену, по крайней мере в ближайшие дцать лет.

Аргументируй, плиз.

Ответы206850

9 июня, 22:45 445 1206724

>>1206376
>Бля, как же заебали заголовочные Circular dependency,
Не пихай все в хидер. В хидере должен быть самый минимум, в идеале только сигнатуры. Реализации - в отдельных файлах (в том числе для темплейтов), тогда и проблем с циклическими зависимостями не будет, и конпеляция будет быстрая.

Ответы206836207073

10 июня, 00:23 446 1206806

https://old.reddit.com/r/cpp/comments/8prqzm/2018_rapperswil_iso_c_committee_trip_report/

10 июня, 01:10 447 1206836

>>1206724
>реализация в отдельных файлах
>для темплейтов

Ответы206984207087

10 июня, 01:37 448 1206848

Я правильно понимаю, что std::shared_ptr работает примерно как GC?

Ответы206949

10 июня, 01:49 449 1206850

>>1206680
>мультимедиа реального времени
Ява и прочая.

Ответы206961206963

10 июня, 03:16 450 1206873

>>1206675

Мимо:
- трейдинг (да, это там, где за свитч у биржи платят миллионы)
- куча систем с требованием малого времени отклика (ближе к С обычно)
- внутренности тонн библиотек, которые зовут из питонов, джав и прочих нод
- куча всякого легаси говна, которое ещё лопатить-не перелопатить (за деньги)

Но посыл правильный: учите другие языки и технологии, чтобы не быть слишком нишевым спецом и иметь опыт разного, а не задрачивайте инструкции асма 99% это никому не понадобится

10 июня, 10:34 451 1206920

Кто сколько получает? Чем занимаетесь?

10 июня, 12:22 452 1206949

>>1206848
Нет, он работает приблизительно как счётчик ссылок.

10 июня, 12:50 453 1206961

>>1206850
Ты ебанутый?

Ответы207118

10 июня, 12:53 454 1206963

>>1206850
>Ява
>сборщик мусора
>мультимедия реального времени
>реального времени

Ответы209765

10 июня, 13:36 455 1206984

>>1206836
>what is extern template?

10 июня, 15:12 456 1207073

>>1206724
Ну так я всегда так и делаю, только если 2 класса требуют друг-друга, то 2 заголовка и будут включать друг-друга, получается циклическая зависимость.

Ответы207091

10 июня, 15:39 457 1207087

>>1206836
Вот, например:
https://github.com/g-truc/glm/blob/master/glm/gtx/common.hpp
https://github.com/g-truc/glm/blob/master/glm/gtx/common.inl

Ответы207107

10 июня, 15:44 458 1207091

>>1207073
> если 2 класса требуют друг-друга
В заголовках только forward declaration и указатели на другой класс. Все использование класса - в cpp/inl. Тогда никакие циклические ссылки не страшны.
>и будут включать друг-друга
В смысле поле одного класса - еще не объявленный класс? Это невозможно - компилятору надо знать layout всех полей класса, чтобы с ним работать (если это указатель).

Ответы207099207101

10 июня, 15:58 459 1207099

>>1207091
Мимоанон - >указатели на другой класс
Тогда все преимущества ссылок летят в пизду, потому что использовать их нельзя, поскольку у препроцессора, компилятора и линкера едет крыша.

Ответы207105207107

10 июня, 16:00 460 1207101

>>1207091
>если это указатель
если это НЕ указатель
fix

10 июня, 16:02 461 1207105

>>1207099
>поскольку у препроцессора, компилятора и линкера едет крыша
Скорее всего проблема у тебя, а не у компилятора. Если все грамотно объявить, никаких проблем со ссылками не должно быть.

Ответы207113

10 июня, 16:03 462 1207107

>>1207087
https://github.com/g-truc/glm/blob/master/glm/gtx/common.hpp#L76
Это не в отдельных файлах, просто один инклудится в другой.
>>1207099
> Тогда все преимущества ссылок летят в пизду
Умные указатели (как и простые) не требую полного определения класса. Используй их.

Ответы207113207114

10 июня, 16:11 463 1207113

>>1207107
>>1207105

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

Ответы207116

10 июня, 16:12 464 1207114

>>1207107
>Это не в отдельных файлах, просто один инклудится в другой.
Да, я просто принцип хотел показать. Это первое, что на глаза попалось. Никто не мешает два отдельных файла сделать, и реализации темплейтов в объектном файле задавать.

10 июня, 16:14 465 1207116

>>1207113
>Но ссылки требуют.
Не требуют по стандарту. У тебя, видимо, объявлений конструкторов/деструкторов или каких-то функций не видно, вот компилятор и шумит.

Ответы207138

10 июня, 16:15 466 1207118

>>1206961
Ну это шутка такая, почему ты такая бака =3

10 июня, 16:28 467 1207138

>>1207116
Это значит что мне надо делать forward declaration класса и declaration его конструктора/деструктора там же, лол? Можно пример кода где есть десяток классов (в разных .h и .cpp), которые друг друга агрегируют по ссылке (именно С++ -ссылке) и ничего не ломается, и код собирается норм?

10 июня, 17:19 468 1207173

Ребят, извините за глупый вопрос, я тут первый раз, да и вообще недавно начал заниматься, прочел только 200 страниц у Страусотрупа.
Я не понимаю, как работает эта штука по выявлению простых чисел.
Почему is_prime не возвращает, например, 4? Ведь в первом лупе 4 делится на 2, ок, остатка нет, но во втором 4 делится на 3 и есть остаток и поэтому должно быть return true. Но 4 в вектор не попадает...

vector<int> prime;

bool is_prime(int n)
{
for (int p = 0; p<prime.size(); ++p)
if (n%prime[p] == 0) return false;
return true;
}
int main()

{
prime.push_back(2);

for (int i = 3; i <= 100; ++i)
if (is_prime(i)) prime.push_back(i);

cout << "Primes: ";
for (int p = 0; p<prime.size(); ++p)
cout << prime[p] << '\n';
}

Ответы207206

10 июня, 17:55 469 1207206

>>1207173
> Ведь в первом лупе 4 делится на 2, ок, остатка нет
Ну так цикл сразу на этом месте заканчивается и возвращается false. Дальше перебор просто не происходит.

Ответы207215

10 июня, 18:06 470 1207215

>>1207206
А что с числом 9?
9/2=есть остаток, но оно все равно false.

Ответы207224

10 июня, 18:20 471 1207224

>>1207215
Цикл продолжается, дальше 9 делится на следующее простое число - 3. Тут уже остатка нет и цикл завершается.

Ответы207238

10 июня, 18:33 472 1207238

>>1207224
Я думал, в случае 9 цикл сразу же после деления на 2 остановится, всю голову себе сломал над этой херней.
Спасибо!

11 июня, 11:50 473 1207623

Какой язык программирования сейчас считается "убийцей с++"?

Ответы207626207644207664207770

11 июня, 11:55 474 1207626

>>1207623
Rust.

11 июня, 12:46 475 1207644

>>1207623
Nim

11 июня, 13:29 476 1207664

>>1207623
c++

11 июня, 17:05 477 1207770

>>1207623
D

11 июня, 17:07 478 1207773

>>1206675
Пишу кернел драйвер в России за 270к рублей в месяц. Так что не, ты не прав. Да и геймдева в России полноценного-плюсового раз два и обчелся. В основном говно на юнити же

11 июня, 17:19 479 1207787

В цикле передаю в асинки лямбды с захватом this. Как мне лучше проследить что потоки завершились, если класс решил уничтожится? Пока придумал сохранять фьючеры куда нибудь в лист. На следующих итерациях цикла удалять те, что готовы не ожидая через wait_for(0). А в деструкторе уже ждать пока не завершатся все. Может есть способ получше?

Ответы207788207791

11 июня, 17:21 480 1207788

>>1207787
> Как мне лучше проследить что потоки завершились, если класс решил уничтожится?
Запихнуть принудительное уничтожение в деструктор не вариант?

11 июня, 17:25 481 1207791

>>1207787
Да у меня не совсем асинки а тредпул. С методами вроде AddTask (закинул и забыл). AddTrackedTask (возвращает future).

12 июня, 10:00 482 1208165

>>1206386
> Стандарт только выйдет к 20 году (возможно ещё позже)
Тут посоны из iso c++ порешали:
https://www.reddit.com/r/cpp/comments/8prqzm/2018_rapperswil_iso_c_committee_trip_report/
> It became clear the Modules TS will probably not be adopted as-is and may miss C++20.
Так что модули скорее всего будут только в C++23. Так что ждать придётся ещё минимум пять лет. А-ха-ха!

Ответы208501

41 Кб, 637x579
12 июня, 18:13 483 1208495

Как помягче перекатится с шарпов в плюсы?

Ответы208503208506208707

12 июня, 18:23 484 1208501

>>1208165
>trip_report/

12 июня, 18:24 485 1208503

>>1208495
лол
Зачем? Сколько C#-кодеров видел все поливали грязью С++

Ответы208543

12 июня, 18:25 486 1208506

>>1208495
Закупи побольше вазелина. Будет больно.

12 июня, 19:25 487 1208543

>>1208503
Дебы потому что.

12 июня, 23:21 488 1208707

>>1208495
Берешь и вкатываешься, языки во многом похожи. Не так как джава с сисярпом, но всё же. Очень тщательно изучай поведение ссылочных типов, в плюсах оно вообще не такое как в решетках. Заглядывай почаще на cppreference и вообще на сайты с матчастью. Ну и не унывай.

12 июня, 23:51 489 1208726

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

13 июня, 00:12 490 1208740

>>1201067
https://www.boost.org/doc/libs/1_66_0/libs/pool/doc/html/index.html
изучал?

13 июня, 00:26 491 1208746

>>1205702
move семантика позволила использовать класс оптимизаций, связанный с созданием временных объектов в выражениях.

Ответы208783

13 июня, 05:17 492 1208783

>>1208746
Это разве не к perfect forwarding относится?

13 июня, 05:55 493 1208792

Суп, двач. Недавно попробовал написать что-то в emacs - это полный пиздец. Я привык к visual studio и Qt Creator.

Как научиться пользоваться emacs?
У кого-то была learning curve? Пока что только заставляю себя каждый день сидеть в emacs туториале и практиковать хоткеи

Ответы208794208801208834

13 июня, 06:24 494 1208794

>>1208792
Правильно. Emacs появился в древние времена и по тем временам он был современным и удобным редактором. Сейчас в нем смысла нет никакого вообще.

Я слегка знаю emacs и юзаю его когда надо что-то поправить в коде на удаленной машине через SSH. Использовать его как основной редактор - да ну нафиг. Простейшие операции вроде навигации по дереву файлов уже магия.

Ответы208796208908

13 июня, 06:27 495 1208795

В своем домашнем проектике я решил для пробы отключить исключения.

И знаете что? Это просто охуенно! С++ внезапно стал куда более приятным языком. Больше ненужно бояться, что поток выполнения внезапно прервется. Больше не нужно заворачивать все в RAII. Можно просто писать код, который будет выполняться как написан.

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

Ответы208797

13 июня, 06:40 496 1208796

>>1208794
Я когда только на убунту сел думал что из менеджера пакетов не вылезу. В apt-get'е не было поиска, категорий и звёздочек, а там были. Да и быстрее мне это казалось, чем гуглить сначала how to install что-то, ибо не всегда угадаешь как называется пакет нужного приложения.

Но сейчас привык через терминал обновлять.
Может здесь так же всё?

Ответы208798

13 июня, 06:46 497 1208797

>>1208795

Тоже мне удивил. Это обезьянья практика. Ещё после выхода Go народ понял что зря оно надо. Прикинь если бы ASIO вместо ec использовал эксэпшоны?

13 июня, 06:52 498 1208798

>>1208796
Какие-то вещи через консоль действительно делать удобнее, какие-то нет (gdb, например). Что ты ожидаешь от emacs чего тебе не хватает в современных редакторах? Дух опенсорса ступней Столмена?

Ответы208799

13 июня, 07:06 499 1208799

>>1208798
На первой работе 2 с лишним года использовал windows, так как мы писали клиент-сервер, и клиент был только виндовский. Плюс работа была с железяками, а к ним утилиты все были ТОЛЬКО ПОД ВИНДУ.

В итоге привык к Visual Studio, гуишным службам контроля версий и всему другому на Windows. На собесах смотрят как на говно, хочу хотя бы немного поучить ЭЛИТАРНЫЙ СТЭК.

На самом деле меня не переубедишь что Visual Studio - это самое удобное что есть на земле.

Ответы208803

13 июня, 07:14 500 1208801

368 Кб, 1920x130910 Кб, 352x200

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

13 июня, 07:17 501 1208803

>>1208799
Мы пишем на работе под Linux. Большинство пользуется QT Creator и VSCode, кто-то Sublime Text. emacs'ом пользуются только несколько человек.

Ради элитности подучи cmake лучше, а в чем код редактировать - нет разницы.

Ответы208804208807

13 июня, 07:22 502 1208804

>>1208803
C++ в VSCode? Оно хоть нормально работает? Там же вроде все в ебучем JSON настраивать надо, проект, дебаггер, компайлер, и тд.

Ответы208808208812

13 июня, 07:26 503 1208807

>>1208803
Об этом речи не идёт. Всё что кросс-платформенно я более менее-знаю. Вот вручную с makefile буду страдать.

Думаешь нормально на собесе сказать "юзаю так ибо мне так нравится, мамку вашу ебал"?

13 июня, 07:27 504 1208808

>>1208804
Он же написал что на линуксе работает. Что значит "настраивать надо"?
А по другому бывает что ли?

13 июня, 07:40 505 1208812

>>1208804
Да, работает. Ставится плагин и все. Работает подсветка, отладка, автокомплит, clang-format, интеграция со сборкой и переход к ошибкам.
Да, настраивается через JSON. Но несложно, все хорошо описывает.

13 июня, 08:49 506 1208833

Вопрос по explicit.
А что, это вообще правило хорошего тона в пользовательских классах конструктор делать explicit?

Ответы208835

13 июня, 08:50 507 1208834

>>1208792
emacs это что-то типа vim?

13 июня, 08:51 508 1208835

>>1208833
Конструктор с одним параметром рекомендуется, во избежание сюрпризов

13 июня, 10:21 509 1208863

RAII это чисто C++ идиома или актуальна для всего ООП?
По статье в википедии непонятно, других языков настолько не знаю, поэтому спрашиваю тут.

Ответы208882

13 июня, 10:59 510 1208882

>>1208863
Явно не для всего. Если в ЯП есть сборщик мусора, то RAII работать не будет.

Но, например, в расе есть RAII, хотя там нет полноценного ООП (там нет наследования).

Ответы208885

13 июня, 10:59 511 1208885

>>1208882
> расе
расте
fix

13 июня, 11:36 512 1208894

Могут ли скрытые приведения приводить к Undefined Behaviour и нужно ли их бояться?

Перекат 13 июня, 12:02 513 1208906

https://2ch.hk/pr/res/1208905.html (М)
https://2ch.hk/pr/res/1208905.html (М)
https://2ch.hk/pr/res/1208905.html (М)
https://2ch.hk/pr/res/1208905.html (М)

13 июня, 12:03 514 1208908

>>1208794
У меня до сих пор vi открывается при использовании гита, а перенастраивать лень. Вот освоить базу вима это мастхев. Представь как тяжело тем, кто вима ни разу в жизни не видел и первый раз делает git commit или того хуже резолвит кофликт лол.

Ответы209486210063

13 июня, 19:41 515 1209259

>>1206104
С++ использует треды, предоставляемые ОС. ОС предоставляет настоящие железные треды

14 июня, 00:16 516 1209486

>>1208908
>первый раз делает git commit

юзаю tortoise svn, команды гита не помню вобще

14 июня, 14:38 517 1209765

>>1206963
Сильные дяди пишут на яве мощные, быстрые, масштабируемые во все стороны приложения, при этом сборщик мусора не собирает мусор ВООБЩЕ.

Ответы209872

33 Кб, 720x720
14 июня, 17:21 518 1209872

>>1209765
>Ява
>мощные
>быстрые

14 июня, 23:00 519 1210063

>>1208908
Есть nano, зачем vi и прочее?

Ответы210264

15 июня, 11:25 520 1210264

>>1210063
Есть VS Code

19 июня, 05:18 521 1213014

>>1201752
нахуя ты это говно в c++ тред принёс? уноси

20 июня, 18:09 522 1213850

Есть класс, который есть абстракция приложения. У приложения есть графические пассивные элементы (надписи и иконки). Их всего в районе 5-7 и возник вопрос как лучше внедрить поддержку хранения этих элементов в класс.

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

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

Предположим, что их больше, в районе 70. Как в таком случае реализовать их хранение в классе?

Интересует именно как правильно это сделать, а не "ну, работает жи".

Тред утонул или удален.
Это копия, сохраненная 15 августа 2018 года.

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

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

« /pr/В начало тредаВеб-версияНастройки

/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.gq, m2ch.cf, m2ch.fapp.in, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion