O(1) находит/содержит в std::ranges::views::iotaC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 O(1) находит/содержит в std::ranges::views::iota

Сообщение Anonymous »

Я понимаю, что йота может быть сложной (например, бесконечной), поэтому в общем случае это нелегко сделать, но в некоторых случаях должно быть возможным выполнить операцию find/contains в O(1).
Например

Код: Выделить всё

int main() {
auto vals = views::iota(10'000'000'000, 100'000'000'000);
return ranges::find(vals, 74'656'000'000) != vals.end();
}
работает «бесконечно» (выполняя линейный поиск), в то время как
очевидно, проверка может быть выполнена за O (1).
Есть ли способ сделать этот общий способ с C++ (т.е. поиск/содержит, что в других представлениях требуется линейное время, а когда он обнаруживает йоту, это занимает O (1)), или мне нужно вручную определить, когда представление, переданное в мою функцию, является конечным представлением йоты, и выполнить >=передняя

Подробнее здесь: https://stackoverflow.com/questions/761 ... sviewsiota
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»