Вопросы по теме 'range-v3'

Поиск минимального элемента на основе преобразованного значения
Вот такая задача пришла мне из code review. Я хочу выбрать минимальное значение из набора на основе специального предиката сравнения. Как это: struct Complex { ... }; float calcReduction(Complex elem); Complex findMinValueWithPredicates(const...
2305 просмотров
schedule 21.05.2023

Как `partial_sum` диапазона-v3 не противоречит семантике ссылок, не являющихся владельцами?
Рассмотрите Как мне написать конвейер диапазона, который использует временные контейнеры? . Вопрос в том, как построить представление, преобразующее каждый элемент T с помощью некоторой заданной функции. std::vector<T> f(T t);...
170 просмотров
schedule 21.06.2023

v3 требования к make_iterator_range
Я пытаюсь преобразовать свой диапазон (пара итераторов) в iterator_range , чтобы я мог использовать все представления и действия. Я могу преобразовать свой диапазон в boost::iterator_range, но получаю ошибку компиляции при преобразовании в...
565 просмотров
schedule 08.07.2023

range-v3, как действовать :: присоединиться с разделителем
Я получаю range-v3 для MSVC от git. И скомпилировать компилятором MSVC C++14. Рассмотрим код: auto getter2 = [](const std::string&r) { return r+r; }; std::vector<std::string> vv = { "11","22", "33" }; std::cout << (vv |...
1527 просмотров
schedule 11.02.2023

Почему ranges::accumulate не передает init как std::move(init) при вызове?
На момент фиксации d5e9afc 17 марта 2018 года accumulate.hpp При передаче диапазона init получает std::move один раз, как это. T operator()(Rng && rng, T init, Op op = Op{}, P proj = P{}) const { return...
170 просмотров
schedule 12.07.2023

Как я могу стать владельцем коллекции с помощью range-v3?
Я хочу вернуть диапазон из функции, представляющей представление коллекции STL, примерно так: auto createRange() { std::unordered_set<int> is = {1, 2, 3, 4, 5, 6}; return is | view::transform([](auto&& i) { return...
135 просмотров
schedule 12.04.2023

возвращать различные конструкции диапазона из функции
Я пытаюсь получить представления диапазона, которые ведут себя как маски «истина-ложь». Чтобы выполнять логические операции, я хочу реализовать ands и ors масок. У меня есть рабочее время компиляции или: struct make_or_mask_fn {...
69 просмотров
schedule 24.08.2022

Библиотека C++ range-v3: "брать" первые 3 совершенных числа работает и останавливается; «взять» первые 4 не останавливается после 4
Насколько я понимаю, операции просмотра библиотеки range-v3 (в настоящее время требуется С++ 17, но чтобы стать официальной частью STL в С++ 20) предоставляют цепные алгоритмы, подобные STL, которые оцениваются лениво. В качестве эксперимента я...
588 просмотров
schedule 10.04.2023

range-v3: статическое утверждение не удалось: невозможно получить представление о временном контейнере
Я изучаю библиотеку range-v3 и у меня проблема с компиляцией следующего кода: #include <range/v3/all.hpp> #include <iostream> #include <vector> using namespace ranges; using std::vector; using std::pair; // does not use ranges...
88 просмотров
schedule 16.11.2023

Как создать декартов диапазон продуктов из отфильтрованных данных?
Я пытаюсь создать диапазон декартовых продуктов из меньших диапазонов. Я думал, что ranges::v3::view::cartesian_product сработает, но почему-то это не так. Если я попытаюсь создать декартово произведение, используя контейнеры напрямую, у меня не...
284 просмотров
schedule 16.11.2022

записать в заархивированные обратно вставленные диапазоны
Близкий родственник этого другого вопроса , но с back_inserter : #include <range/v3/view.hpp> #include <range/v3/view/zip.hpp> #include <range/v3/utility/iterator.hpp> // ... std::vector< std::tuple<int, std::string,...
67 просмотров
schedule 29.04.2024

Как с диапазонами Range v3 объединить представления и действия в единый конвейер?
Я изучаю диапазоны C++20 (используя Range-V3-VS2015 ). У меня есть этот код, который отлично работает: string clean; auto tmp1 = input | view::remove_if(not_alpha) | view::transform(::tolower); std::copy(tmp1.begin(), tmp1.end(),...
1543 просмотров
schedule 04.03.2024

Почему я не могу отменить разделенный диапазон с помощью range-v3?
Я хочу разделить, перевернуть, а затем соединить строку, используя range-v3. Однако приведенный ниже код не будет компилироваться. #include <range/v3/all.hpp> #include <iostream> using namespace ranges; int main(int argc, char...
494 просмотров
schedule 09.07.2023

Преобразование с использованием диапазона-v3
Я пытаюсь использовать код ниже, используя диапазоны, но он не работает. // Code std::map<int, std::string> m{ {1,"foo"},{42,"bar"},{7,"baz"} }; std::vector<int> keys; // without using ranges std::transform(begin(m), end(m),...
307 просмотров
schedule 26.06.2022

Могу ли я подключиться к range-v3 для накопления?
Я нашел более старые вопросы 3-летней давности, в которых говорится, что в целом это невозможно, но мне бы очень хотелось, чтобы конвейер накапливался, поскольку в некоторых случаях это довольно приятно, например это: const double val = data |...
426 просмотров
schedule 06.04.2023

Использование range-v3 для чтения строк с данными, разделенными запятыми
да еще раз, потому что я недавно задал очень похожий вопрос (как читать список целых чисел, разделенных запятыми), но на этот раз я застрял на чтении строк строк, состоящих из данных, разделенных запятыми. Конечно, должно быть тривиально...
230 просмотров
schedule 09.05.2024

Удалить дубликаты в двух векторах на основе дубликатов в первом векторе
У меня есть два вектора, которые связаны между собой. Векторы имеют одинаковый размер, и их содержимое совпадает 1:1 в том смысле, что он может быть рефакторингом в один вектор некоторой структуры. Я пытаюсь удалить дубликаты в первом векторе, и это...
45 просмотров
schedule 08.01.2023

понимание того, как работает zip в диапазоне v3
Я пытаюсь понять, как range :: views :: zip работает в range-v3. Я понимаю, что это диапазон, который позволяет выполнять итерацию по нескольким диапазонам в одном цикле, создавая кортеж из элементов в разных диапазонах. std::vector<int> v1...
1235 просмотров
schedule 15.10.2022

Как заархивировать вектор вектора с помощью range-v3
(Это продолжение Суммировать вектор с диапазоном-v3 ) Если у меня есть два (или более) вектора, я могу zip их вместе с range-v3 вот так: std::vector< int > v1{1,1,1}; std::vector< int > v2{2,2,2}; auto v = ranges::views::zip(...
193 просмотров
schedule 17.09.2023

Почему `accumulate` не попал в диапазоны для C++20?
Я подозреваю, что accumulate — не единственный алгоритм, который этого не сделал. Может быть, теперь есть лучший способ выполнять накопление (свертывание) по диапазону, и поэтому accumulate устарел?
186 просмотров
schedule 30.08.2023