Рубрика «c++» - 263

Оптимизация для CPU: как найти черную кошку в темной комнате
Метод недопустимой операции:
Разделить кошку на ноль,
после чего она станет бесконечно большой,
так что её будет невозможно упустить.

[АбсурдопедиЯ]

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

Итак, имеем задачу последовательной перестановки байтов в каждом слове массива (big-endian <-> little-endian) и суммирования всех слов в одно (reduction). Оставим пока в стороне задачу распараллеливания, ибо ее решение близко к тривиальному, и для нас пока не представляет интереса.

image

Читать полностью »

Доброго времени суток!

Все время очень сильно привлекала внимание обработка изображений (алгоритмы сжатия, фильтры и т.д.). Увы, сложилось так, что работа практически не связана ни с обработкой изображений, ни с программированием вообще. Тем не менее, интерес к любимому делу не уменьшился и поэтому хочу представить Вашему вниманию недавно открытую для себя библиотеку CImg.
Читать полностью »

На Хабре и в Сети достаточно много статей на тему QML, но все они оставляют за кадром некоторые моменты. Сегодня я попытаюсь приподнять занавес над некоторыми очевидными моментами для тех, кто имел дело со связкой QML и C++, и не таких очевидных для тех, кто только начинает вникать в нюансы этой замечательной технологии.
Итак. Допустим, у нас есть интерфейс приложения на QML и C++ класс с логикой работы. Как же нам собрать все это в единое целое?Читать полностью »

Бегло просматривая новый стандарт C++11, решил углубить свое понимание в теме rvalue references. Все, в принципе, замечательно, но есть подводные камни, а именно: некоторая потеря обратной совместимости с С++03.
Читать полностью »

Бегло просматривая новый стандарт C++11, решил углубить свое понимание в теме rvalue references. Все, в принципе, замечательно, но есть подводные камни, а именно: некоторая потеря обратной совместимости с С++03.
Читать полностью »

в 12:17, , рубрики: c++, move, метки: ,

Добрый день!

Еще вчера я честно думал, что разобрался как работают rvalue references в C++11. Думал до тех пор, пока не наткнулся на грабли.

Итак, я предлагаю размять мозги и попробовать написать функцию move_if_rr. Такой себе тест на понимание: успех засчитывается за функцию, которая работает правильно при условии, что Вы ее ни разу не отлаживали. Детали задания под катом.Читать полностью »

в 7:47, , рубрики: c++, c++11, gcc, open source, Компиляторы, метки: , ,

Сегодня ночью вышел долгожданный GCC 4.7, выпуск которого приурочен к 25-летию проекта.

Долгожданным этот выпуск является прежде всего для программистов C++, так как несет с собой обширную поддержку нового стандарта С++11.
Читать полностью »

В Visual C++ нет нормального стандартного способа отображения произвольных изображений на форме. Конечно, можно воспользоваться Picture Control, но изображение в нем можно установить только из ресурсов (насколько я помню), отсутствует возможность масштабирования, и нет поддержки скролбаров, если изображение выходит за границы контрола. Эти задачи и были реализованы в Image Control (часть кода была заимствована из другого контрола, но к сожалению источник уже затерялся, так как делал я это давно).

Называется класс CImageViewer, и наследуется он от CWnd. Изображение, отображаемое в контроле, хранится в члене класса m_image с типом CImage. Это позволит нам отображать изображения большинства популярных форматов. Основные методы класса:

— Установка изображения: void SetImage(CImage *image);
— Увеличить: void ZoomIn();
— Уменьшить: void ZoomOut();

Остальные методы и члена класса являются служебными.Читать полностью »

Из-за небольшого количества стандартных элементов управления в Visual C++ большинство компонентов приходится дописывать самостоятельно, особенно если вопрос касается отображения табличных данных. Для боле менее серьезных систем стандартного ListCtrl уже не хватает. Покопавшись в интернете можно найти немалое количество коммерческих grid’ов, но со своими кровными не очень хочется расставаться, тут на помощь и приходит замечательный компонент от Yuriy Zabroda VirtualGridCtrl.

Данный компонент был написан еще в Visual C++ 6.0, но и по сегодняшний день его можно успешно использовать в более свежих версиях Visual C++. На самом деле при выборе для себя грида я выдвигал несколько требований:

— многострочная шапка грида (без этого сложно представить хоть сколько-нибудь сложный отчет)
— отображение многострочного текста
— возможность подменить в строках таблицы стандартный CEdit на свои элементы управления
— возможность выделять цветом отдельные записи
— скорость работы

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

С остальными возможностями разберемся, используя небольшой пример.Читать полностью »

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

Ниже я хочу рассказать о пользовательских литералах — весьма полезном средстве, хоть и не в повседневных целях.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js