Почему views::split игнорирует пустой поддиапазон после разделителя, если это последний элемент входного диапазона?

Для следующего кода:

#include <iostream>
#include <string>
#include <ranges>

int main() 
{
    std::string s = " text ";
    auto sv = std::ranges::views::split(s, ' ');                    
    std::cout << std::ranges::distance(sv.begin(), sv.end());
}

вывод - 2. Пустой поддиапазон после последнего разделителя отсутствует в выходном диапазоне.

Это кажется непоследовательным, поскольку я ожидаю, что N+1 поддиапазоны в выходном диапазоне, если есть Nвхождения разделителя во входном диапазоне. Почему это не так?

Обратите внимание, что range-v3 делает то же самое, поэтому я уверен, что это сделано намеренно, но я хотел бы знать, почему.

0 ответов

Другие вопросы по тегам