контейнер с возможностью поиска ~ln(n)

Тема в разделе "LANGS.C", создана пользователем cupuyc, 15 янв 2011.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Мне нужен такой контейнер для которого можно было бы найти элемент меньший или равный заданному за время ~ ln(n). Понятно, что подойдёт set или упорядоченный вектор. В библиотеке algorighm есть метод find, но он перебирает все элементы по порядку.

    То есть я хочу что-то типа такого:

    Код (Text):
    1. std::set<int> s;
    2. s.insert(1);
    3. s.insert(3);
    4. s.lower_bound(1) // *iterator == 1
    5. s.lower_bound(2) // *iterator == 1
    6. s.lower_bound(3) // *iterator == 3
    как-то так.. Для вектора есть такой же поиск?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Почему же вы не хотите гуглить?
    equal_range, upper_bound, lower_bound
     
  3. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Booster, для упорядоченного вектора?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Ну что же вы спрашиваете? Посмотрите первую ссылку в гугле.
    http://www.sgi.com/tech/stl/equal_range.html
     
  5. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Booster, спасибо.