Вопросы по теме '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