Рубрика «stl» - 3

В продолжение первой части статьи про настройки слайсера 3D принтер VS Axe (Dota2), давайте рассмотрим настройки поддержек.

Переходим к настройке раздела Support material – Поддержки. Самый «серьезный» пункт в случае, когда модель нуждается в поддержках, и здесь нужно быть очень аккуратным.

3D принтер VS Axe (Dota2) Ч.2 - 1
Читать полностью »

Уже какое-то время я тщательно слежу за нишей 3D принтинга. А вот если совсем честно, то за ней не возможно не следить, так как все информационные и новостные порталы кишат статьями из этой области. Ничего удивительно, ведь это прогрессивная технология, много нового и слишком много пассажиров, которые пытаются закрепиться у «истоков».

В общем история-то, больше не о моем личном восприятии или субъективном виденье всего происходящего, а больше о практической ее части и самом процессе печати. Мне ранее довелось непосредственно поработать на этом поприще. Как-то полтора года назад, знакомые рассказали мне о достаточно еще новой, на тот момент, технологии 3D принтинга и ее возможностях. Не скрою, что эта технология была ох как далека от меня. Не составило труда разобраться что к чему, за маленьким исключением: сам процесс печати. На мой взгляд немного деревянный софт, который прилагается и является неотъемлемой частью принтера оказался настоящим испытанием.

3D принтер VS Axe (Dota2) Ч.1 - 1
Читать полностью »

Folly — это открытая С++ библиотека, разрабатываемая Facebook и используемая им во внутренних проектах. С целью оптимизации расходов памяти и процессорных ресурсов библиотека включает собственные реализации некоторых стандартных контейнеров и алгоритмов. Одной из них является folly::fbvector — замена стандартного вектора (std::vector). Реализация от Facebook полностью совместима с оригинальным интерфейсом std::vector, изменения всегда не-негативны, почти всегда измеримы, часто — существенно, а иногда даже грандиозно влияют на производительность иили расход памяти. Просто включите заголовочный файл folly/FBVector.h и замените std::vector на folly::fbvector для использования его в своём коде.

Пример

folly::fbvector<int> numbers({0, 1, 2, 3});
numbers.reserve(10);
for (int i = 4; i < 10; i++) {
  numbers.push_back(i * 2);
}
assert(numbers[6] == 12);

Мотивация

std::vector — устоявшаяся абстракция, которую многие используют для динамически-аллоцируемых массивов в С++. Также это самый известный и самый часто используемый контейнер. Тем большим сюрпризом оказывается то, что его стандартная реализация оставляет достаточно много возможностей по улучшению эффективности использования вектора. Этот документ объясняет, как реализация folly::fbvector улучшает некоторые аспекты std::vector. Вы можете воспользоваться тестами из folly/test/FBVectorTest.cpp чтобы сравнить производительность std::vector и folly::fbvector.
Читать полностью »

Это статья для начинающих. Рассматривается использование простых функторов в алгоритмах. Рассказано про копирующий конструктор. Основная цель, это исследование количества создаваемых объектов функторов и простых методов как это можно сделать. Программа-пример последовательно усложняется. Некоторые шаги могут показаться неверными и лишними, но это типичный процесс исследования и отладки. Такой подход выбран сознательно. Обычный способ, когда делаются только разумные шаги, далек от реальности. И еще, чтобы заинтриговать, скажу, что в конце статьи получаем очень неожиданный результат.
Читать полностью »

Так уж случилось, что по долгу работы очень много времени провожу с операционными системами семейства GNU/Linux. Основным видом моей деятельности является разработка программного обеспечения на С++.

Так вот, основной проблемой при использовании отладчика – это отображение сложных контейнеров, например, stl-контейнеров.

Решение, которое я предлагаю, актуально для gdb. Этот отладчик поддерживает скрипты, написанные на языке python, а механизмы отображения сложных объектов, называются pretty printers. Т.е. чтобы отладчик отображал нам все правильно, необходимо указать ему где находятся скрипты с этими самыми pretty printers. Для указания отладчику дополнительных команд необходим файл .gdbinit.

Итак, попробую оформить все, как инструкцию, так и читать удобней, и сам не забуду.
Читать полностью »

Рассмотрим код:

std::multiset<int> set0, set1;
for (auto it = set0.begin(); it != set0.end(); ++it) {
	// длинная
	// обработка
	// *it
}
for (auto it = set1.rbegin(); it != set1.rend(); ++it) {
	// длинная
	// обработка
	// *it
}

Обработка в телах циклов — одинаковая, иными словами требуется одинаково обработать элементы двух мультимножеств: первого — в прямом порядке, второго — в обратном.
Читать полностью »

В Photoshop добавили поддержку 3D печати

Компания Adobe сегодня сообщила о большом обновлении графического редактора Photoshop CC. Главное изменение — это поддержка 3D-печати. Нужно отметить и анонс потрясающего нового режима перспективной деформации фотографий (Perspective Warp).
Читать полностью »

Хочу поделится очередным велосипедом собственной сборки на С++. Велосипед умеет быстро создавать и выдавать объекты. В результате получаем скорость создания (не отдачи) объектов на 30% быстрее чем просто с new. Объектный пул — вещь не новая, и в общем — чего о нем и говорить то. Но как говорится — главное в деталях.
Читать полностью »

В апреле 2013 года на Github появилась опция рендеринга 3D-моделей, в частности, файлов STL. Можно вращать их в разные стороны, зуммировать колёсиком мышки и т.д. Теперь же добавлена очень удобная функция визуального просмотра изменений в 3D-моделях.

Github визуализирует изменение кода 3D моделей
Читать полностью »

Завершающая часть перевода интервью (первая часть, вторая часть), взятого у создателя Стандартной библиотеки шаблонов Алекса Степанова в 1995 году. Здесь Алекс рассказывает о том, почему в шаблонах не включена поддержка персистентности и серилазизации, о будущем библиотеки и о связи ООП и обобщённого программирования.

Алекс, STL не реализует объектную модель персистентности (постоянного хранения) объектов. Map и Multimap являются особенно хорошими кандидатами для постоянного хранения контейнеров как инвертированных индексов в базах данных постоянного хранения объектов. Скажите, работали ли Вы в этом направлении или же Вы можете хотя бы прокомментировать реализации этой идеи?

Это обстоятельство отмечалось многими. STL не реализует персистентность по уважительной причине. STL настолько велика, насколько можно было себе представить в то время. Я не думаю, что любой больший набор компонентов прошёл бы через Комитет по стандартам. Но персистентность является тем, о чём думали некоторые люди тогда. При проектировании STL и особенно во время проектирования компонента-распределителя, Бьярн отметил, что распределители, которые инкапсулируют памяти модели, могут быть использованы для инкапсуляции модели постоянной памяти. Прозрение принадлежит Бьярну, и это важное и интересное прозрение. Несколько компаний, разрабатывающие объектные базы данных, рассматривают эту идею. В октябре 1994 года я посетил встречу Группы по системам управления объектными базами данных. Я выступил с докладом по STL, и после был большой интерес к тому, чтобы сделать контейнеры с их развивающимся интерфейсом соответствующими STL. Они не рассматривали распределители как таковые. Некоторые из членов группы, однако, пытались выяснить, могут ли распределители быть использованы для реализации персистентности. Я ожидаю, что в течение следующего года появятся хранилища объектов с STL-совместимыми интерфейсами, которые будут вписываться в рамки STL.
Читать полностью »


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