множества

Тема в разделе "LANGS.C", создана пользователем deLight, 1 фев 2012.

  1. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Hi all.
    Есть плюсцы.
    Посоветуйте функционал для работы с интовыми множествами, что-то готовое или сходное, но быстро
    под эти задачи допиливаемое:
    o нужна возможность задать такой сет и проверить произвольное значение на вхождение в него;
    o сериализация/десериализация в строку такого вида "[-2,4]U[7,11)";
    o не должно отъедать много памяти (битсеты, тоесть, мимо)
     
  2. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    deLight
    Самое простое это упорядоченный массив интервалов. Искать можно двоичным поиском. С преобразованием в строку тоже проблем быть не должно.
     
  3. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Black_mirror
    Да, это все понятно.
    Просто есть принцип пилить что-то, только если это гарантированно "не велосипед", посему и спросил.
     
  4. samuraishowdown

    samuraishowdown New Member

    Публикаций:
    0
    Регистрация:
    6 мар 2011
    Сообщения:
    70
    stl set, не?
     
  5. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    deLight
    Не велосипед для вашей задачи будет страдать излишней универсальностью, почти наверняка он окажется деревом, а это, кроме левой и правой границы интервала, скорее всего потребует хранения еще двух указателей, то есть памяти есть будет уже в два раза больше. Если модификация интервалов после создания не требуется, то велосипед будет самым лучшим решением. Неужели вы не осилите написать сотню строк?
     
  6. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    Black_mirror
    > Неужели вы не осилите написать сотню строк?
    Вопрос не в этой плоскости. Лень -- она, какбэ, по дефолту.

    В остальном thx.