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


0
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);
Источник
  •  76
  •  1
  • 25 янв 2018 2018-01-25 15:18:21

1 ответ

0

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

  • 25 янв 2018 2018-01-25 16:26:31