Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / std::set как получить итератор на середину? / 10 сообщений из 10, страница 1 из 1
25.03.2016, 21:48
    #39200979
Кто Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
Доброго времени суток, господа!

std::set организован в виде дерева, ведь должен быть какой-то способ получить середину без лишнего оверхэда,
за константное время?
(vs 2008)
...
Рейтинг: 0 / 0
26.03.2016, 00:04
    #39201022
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
Нет.
...
Рейтинг: 0 / 0
26.03.2016, 00:06
    #39201024
Пётр Седов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
Кто Я, вы имеете в виду быстро получить итератор, который ссылается на root node? Кросс-платформенно -- нельзя:
// http://www.cplusplus.com/reference/set/set/
Ну а лезть внутрь конкретной реализации STL -- крайне сомнительный путь.
...
Рейтинг: 0 / 0
26.03.2016, 00:36
    #39201031
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
Anatoly Moskovsky,

Как "нет", когда " да "?
...
Рейтинг: 0 / 0
26.03.2016, 00:38
    #39201032
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
Кто ЯДоброго времени суток, господа!

std::set организован в виде дерева, ведь должен быть какой-то способ получить середину без лишнего оверхэда,
за константное время?
(vs 2008)

Не за константное, а за логарифмическое. log(N), ты же сам говоришь "дерево", а у дерева нет
константных времён, они есть только у хэштаблиц.
...
Рейтинг: 0 / 0
26.03.2016, 01:24
    #39201042
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
MasterZivНе за константное, а за логарифмическое.
Ну и какое нафик "да" тогда?
Был конкретный вопрос. Конкретный ответ на него - нет.
...
Рейтинг: 0 / 0
26.03.2016, 01:32
    #39201045
Пётр Седов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
MasterZivу дерева нет константных времёнstd::set реализован каким-нибудь сбалансированным деревом (обычно красно-чёрным), а значит корневой node примерно соответствует середине последовательности. std::set конечно же хранит указатель на корневой node, и запросто мог бы возвращать итератор с этим указателем, за константное время.
...
Рейтинг: 0 / 0
26.03.2016, 01:43
    #39201049
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
Пётр Седовмог бы возвращать итератор с этим указателем, за константное время.
Количество задач в которых нужна середина сета стремится к 0, поэтому мало ли что мог бы, важно не этого нет, и не будет никогда ))
...
Рейтинг: 0 / 0
26.03.2016, 09:00
    #39201070
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
Anatoly MoskovskyПётр Седовмог бы возвращать итератор с этим указателем, за константное время.
Количество задач в которых нужна середина сета стремится к 0, поэтому мало ли что мог бы, важно не этого нет, и не будет никогда ))


Это да, но если примерно знать ключ середины, или хотя-бы его начало, можно получить итератор середины или чего-то близкого к нему.
...
Рейтинг: 0 / 0
26.03.2016, 14:58
    #39201169
Кто Я
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
std::set как получить итератор на середину?
Спасибо за ответы
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / std::set как получить итератор на середину? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]