Anonymous
Информацию фильтровать же надо, ну. Если учить все то можно слегка поехать
Все сразу не получится в любом случае. Закипит голова
Egor
Да и проще
ой ли, я прифигел от отрицатьльных индексов списков...вот кто такое выдумал, и нафига?
Artem
Очень удобно
Egor
Очень удобно
например?
Artem
Обычно это либо -1, либо слайс, описывающий суффикс
Artem
Типа, x[-3:]
Алдар
питон же простой
Artem
Вот да
Алдар
мне как то надо было писать на нем, прочитал туториал и вперед) правда были скрипты простенькие
Egor
Типа, x[-3:]
вопрос не в этом, а в том, зачем так? почему не обычной практикой от нуля в плюс.
Egor
почему вообще понадобились отрицательные индексы
Artem
Не очень простое только всякое метапрограммирование и асинхронность на корутинах, тут надо понять вначале
Artem
Меньше кода - лучше читаемость
Egor
больше бекграунда для трансляции - ниже скорость, не?
Artem
Пфф
Artem
Скорость чего?
Egor
выполнения кода. в плюсах, в определённых ситуациях даже for( int i... может быть медленее чем for( size_t i... при прочих равных.
Egor
для инта потребуется вставка кода проверки диапазона отрицательных значений, сайз_ти - не требует. так себе пример, но всё же
Artem
Отрицательные индексы превращаются в положительные одним преобразованием на уровне аст, это вообще ни на что не влияет
Artem
Но
Artem
В питоне не занимаются такой оптимизацией, о которой ты говоришь
Artem
Почти всегда тормоза вызываются I/O, базой, сетью
Artem
А супер оптимизированные горячие куски кода либо пишутся расширениями на си(++)
Artem
Либо если уж хочешь питон, то выполняются в PyPy
Artem
А там JIT сам тебе все оптимизирует лучше, чем ты руками
Artem
Если твой код не кривой на уровне алгоритма
Egor
у меня видимо сильная проф.деформация на фоне плюсов ))) ладно, расслаблюсь и буду читать дальше 🍺
Artem
Да, все именно так)
Алдар
хехе, питон это не про скорость выполнения
Anonymous
Скорее про скорость написания )
Egor
>все новое >питон
для меня - новое, я ж его не знаю 😂
Алдар
а другой скриптовый язык знаешь?
Egor
а другой скриптовый язык знаешь?
bash, lua, vbscript для MSWin не в совершенстве, но именно как скриптописалки.
Andrey
нафлудили-то )
$continue$
Что делает enable_if? В документации нихуя не понятно :(
ttldtor
имхо, это в супапро.схх
Andrey
Volodymyr
Что делает enable_if? В документации нихуя не понятно :(
Ломает компиляцию, если условие ложно. )
Volodymyr
Можно использовать как аргумент по-умолчанию в шаблоне, если нужно ограничить диапазон типов, с которыми оный шаблон можно использовать. Примерно так template <typename T, typename = typename std::enable_if(std::is_assignable<T, std::string>>
🦥Alex Fails
😄
Ned
эй, кореша, скажите, как правильно эксепшны оформлять?
Ned
на каждый эксепшн свой класс, или можно их как-то подсобрать в кучку?
Anonymous
на каждый эксепшн свой класс, или можно их как-то подсобрать в кучку?
Сделай базовый класс исключений, и наследуй от него классы конкретных ситуаций (я ьы так сделал)
T3ch
да, там переопределяешь метод аля what() только более удобный
Ned
да, там переопределяешь метод аля what() только более удобный
а можно конкретный пример, я не очень понимаю, о чём ты
T3ch
а можно конкретный пример, я не очень понимаю, о чём ты
по дефолту у класса exception есть метод const char* what() const возвращающий сообщение об ошибке
Ned
оО...
T3ch
есть смысл в своем базовом классе поменять на что-то с std::string const&, так удобнее
$continue$
enable_if <>
$continue$
template
Cinder
Энейбл иф обычно для дизамбигити в выборе сигнатур или типов в шаблонах юзают. Больше он ни на что не годен.
Cinder
Если не юзаешь идеи буста, то для исключений всегда std::runtime_error в качестве базового класса юзай. Метод what перекрывать тогда не надо, тк в конструктора можно набить строку описания. Ну а делать свой what со шлехами в стд::стрингах - плохая идея. Между модулями станет неудобно исключения пересылать, тк каждый со временем зааедет свой метод
Cinder
*заведет
Светомеч
Переопределять what() и правда не очень, попробую теперь так делать
Ned
ребяят, а есть идея, как перегрузить оператор [][]?
Ned
имеется класс template <class T> class Matrix{ private: int cols, rows; T* data; }
Ned
есть ли способ перегрузить оператор [][]?
Richard
Через подобъект
Richard
Строку например возвращать
Ned
ну, я возвращаю T*
Richard
Или столбец (смотря что удобнее)
Ned
это строка, да
Ned
но как теперь для строки реализовать оператор []?
Anonymous
А зачем его перегружать?)
Ned
T operator[](T* row); ???
Ned
А зачем его перегружать?)
матрица, все дела
Anonymous
матрица, все дела
Я вижу, что матрица. Зачем перегружать-то?
Ned
Я вижу, что матрица. Зачем перегружать-то?
хочу обращаться к объекту [x][y]
Ned
все дела
Anonymous
хочу спросить, двумерный массив распологается в памяти линейно, в одной плоскости, разумеется( очевидно) что и массивы любого измерения будут распологаться линейно
Anonymous
тогда и адреса(номера) новых измерений(строк) будут у них распологаться линейно ( друг за другом, последовательно в памяти)
Ned
это я понимаю, блин
Ned
как оператор-то объявить
Ned
я сейчас задаю вопрос по синтаксису именно