как из boost::filter_iterator получить исходный итератор?

142
12 марта 2019, 05:10
std::vector<int> arr{1, -1, 1, 1, 1, 4, -1, 4, 4, 4, -1, 7, 8, -1};
auto begin = boost::make_filter_iterator<is_positive_number>(arr.begin(), arr.end());
auto end = boost::make_filter_iterator<is_positive_number>(arr.end(), arr.end());
auto lower = std::lower_bound(arr.begin(), arr.end(), i, [](const auto& val1, const auto& val2) {
        return val1 < val2;
    });
std::vector<int>::iterator iter = ??????(lower);
Answer 1

Наверное в std::lower_bound надо было передавать begin и end, а то они не используются. А получить исходный итератор можно через lower.base().

READ ALSO
Решить методом встречи посередине! [закрыт]

Решить методом встречи посередине! [закрыт]

Найти количество подмножеств чья сумма меньше или равна указанного числа К; Ограничения: максимальное число элементов множества n = 40, каждое...

173
Двоеточие в определении конструктора

Двоеточие в определении конструктора

У меня возникла проблема с пониманием синтаксисаУвидел вот такой конструктор:

161
Как сделать такую разметку с разным количеством слов в строке?

Как сделать такую разметку с разным количеством слов в строке?

Подскажите, пожалуйста, как сделать, чтобы слова из массива выводились в таком виде: то есть, чтобы на строчку влезало разное количество слов,...

165