Описание тега boost-range

Boost.Range - это библиотека C++, содержащая набор концепций и утилит, алгоритмов на основе диапазонов, а также адаптеров диапазонов, которые позволяют создавать эффективный и выразительный код.
1 ответ

Ошибка value_type при использовании контейнеров STL с адаптерами расширенного диапазона

Я пытался понять использование адаптеров с расширенным диапазоном, но все рабочие примеры, которые я нашел, используют только контейнеры STL с примитивными типами, такими как std::list<int> и попытка использовать мои собственные классы делает …
07 июл '13 в 12:57
0 ответов

Какие различия между оптимизатором GCC и clang приводят к тому, что этот код не оптимизируется?

Если я скомпилирую следующий код: #include <boost/range/irange.hpp> template<class Integer> auto iota(Integer last) { return boost::irange(0, last); } template<class Integer, class StepSize> auto iota(Integer last, StepSize step_si…
2 ответа

Использование Boost.Range в интерфейсах C++

У меня полиморфный интерфейс struct Interface { Interface(SomeType& other) : range([=](){ return other.my_range(); }), /*...*/ {} Interface(SomeOtherType& other) : range([=](){ return other.some_range(); }), /*...*/ {} const std::function&lt…
25 июн '13 в 12:58
1 ответ

Добавление диапазонов в цикле

Я хотел бы объединить диапазоны, возвращаемые функцией, в один большой диапазон. Рассмотрим следующий код: some_type_i_cant_figure_out bar() { typedef std::vector<int>::const_iterator iter; std::vector<int> aaa; /* fill some data into aa…
19 ноя '14 в 08:46
2 ответа

Загрузка символов пространства имен внутри функции для создания шаблона

Я написал темплацированный operator+= функция и дал ему уникальное пространство имен (я только хочу использовать его иногда, и это позволяет мне явно). Я хотел бы затем использовать эту функцию внутри другой функции шаблона, которая использует opera…
18 окт '11 в 01:56
4 ответа

Увеличить multi_index_container и медленный оператор ++

Это дополнительный вопрос для этого вопроса MIC. При добавлении элементов в вектор ссылочных упаковщиков я трачу около 80% времени внутри оператора ++ независимо от того, какой вариант итерации я выберу.Запрос работает следующим образом VersionView …
21 дек '14 в 09:03
1 ответ

Можно ли скрыть нижележащие контейнеры с диапазоном усиления?

У меня есть структура графа, где вершины могут иметь несколько типов ребер. Типы вершин полиморфны, и они должны иметь возможность "классифицировать" ребра в зависимости от их типа и сохранять их соответствующим образом, но я хочу иметь возможность …
25 сен '17 в 17:48
1 ответ

Как создать адаптер, который будет возвращать значения карты на основе отфильтрованного ключа, используя предикат для ключа

Как создать адаптер, который будет возвращать значения карты на основе отфильтрованного ключа, используя предикат для ключа? В качестве примера: std::map<int,int> map_obj; const int match_value = 0xFF00; for(auto& i : map_obj | filtered_ke…
29 апр '14 в 06:16
2 ответа

boost::transform(), только если добавляемое значение не равно NULL?

У меня есть следующий код: // For each trigger model (_1) (which is just a CString), do: // m_triggers.push_back(triggers.GetTrigger(static_cast<char const*>(_1))) boost::transform( model.Triggers(), std::back_inserter(m_triggers), phx::bind(&…
31 мар '14 в 19:26
1 ответ

boost:: преобразуется с помощью функтора кортежей, выдает странное предупреждение

Я написал удобную оболочку функтора для кортежа std:: get. При использовании его с преобразованием boost и operator[] я получаю предупреждение, что возвращаю ссылку на локальный временный объект. Моя система: Ubuntu 14.04, компиляторы: clang-3.5 и g…
17 ноя '14 в 12:08
1 ответ

Как избежать копирования в буст-преобразовании диапазона

Требуется преобразование диапазона усиления const & для диапазонов в аргументах. #include <iostream> #include <vector> #include <boost/range/algorithm.hpp> int main(int argc, char *argv[]) { using namespace std; vector<vecto…
06 мар '13 в 12:10
1 ответ

Отфильтрованный адаптер с диапазоном усиления в отрицательном диапазоне

Можно / можно ли отрицать адаптер с повышенным фильтрованием, например std::vector<int> v = {1, 2, 3, 4, 5}; for(auto i : v | !filtered(is_even)) std::cout << i << std::endl; // prints 1,3,5 вместо того, чтобы делать отрицание внут…
08 фев '13 в 09:28
1 ответ

Использование адаптеров расширенного диапазона с диапазоном итераторов каталогов

Изменить: я добавил некоторые решения ниже моего вопроса, основываясь на ответе Джонатана Я хочу иметь список обычных файлов с определенным шаблоном имени в данном каталоге. Я взял один из примеров из boost.filesystem (boost 1.53) и изменил его. Вот…
19 май '13 в 21:31
2 ответа

C++ Boost Range. Массив пар из массива

У меня есть массив целых C, и его размер, т.е. int* arr, unsigned size, Я хочу иметь что-то похожее на что-то, что будет содержать пары элементов в качестве элементов. Чтобы уточнить, задача заключается в следующем: я получаю массив, как [1,2,3,4] и…
21 дек '18 в 09:52
1 ответ

Как можно избежать конфликтов boost::compute::zip_iterator и boost::iterators::zip_iterator при совместном использовании boost compute и boost::range?

Я хотел бы использовать boost::compute and boost::range вместе, как показано ниже, но если я раскомментирую #include <boost/range/combine.hpp> линия я получаю сообщение о том, что boost::compute::zip_iterator а также boost::iterators::zip_iter…
1 ответ

Как мне увеличить::range::sort() boost::transformed_range?

Я хочу получить уникальные элементы из vector<foo> основанный на члене foo, я использую boost::adaptors::transform выбрать члена, затем сортировать, затем с помощью boost::adaptors::unique, У меня проблемы с получением шага сортировки к работе…
10 мар '17 в 21:12
0 ответов

Увеличение диапазона с MSVC2017 приводит к неизвестной ошибке спецификатора переопределения

Следующая программа #include <vector> #include <boost/range/join.hpp> int main() { std::vector<int> a{1, 2, 3}; std::vector<int> b{4, 5, 6}; boost::join(a, b); } Скомпилировано со следующей командной строкой: /GS /W4 /Zc:wcha…
03 июл '17 в 17:04
2 ответа

Увеличить multi_index_container, алгоритмы изменения диапазона и постоянство

Я использую boost multi_index_container, который запрашивается равным equrange, а результат возвращается из функции с использованием range:: join и boost:: any_rangeАргумент any_range Reference определяется как const-ссылка на тип - должен быть cons…
1 ответ

Реализация адаптера Boost диапазона reversed_if

Я регулярно сталкиваюсь с ситуациями в моем коде, в которых я хотел бы выполнять итерации по диапазону в прямом или обратном порядке в зависимости от условий выполнения. Это обычно приводит к коду, подобному следующему if (reverse) { using boost::ad…
22 сен '17 в 12:34
1 ответ

Как инкапсулировать пользовательский итератор в функцию, используя boost-range

В последнее время я использовал boost-range создать диапазоны по элементам, удовлетворяющим определенным критериям. Во всех случаях я все время использую один и тот же вид фильтруемого диапазона, поэтому я пытался инкапсулировать это поведение во вн…
04 июн '18 в 05:40