![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Коллеги, добрый день! Подскажите пожалуйста по такому вопросу.
Есть некоторый map вида:
Необходимо у него задать максимальный размер = SomeNumber. И писать в него данные с проверкой: Если ВЕС вставляемой пары больше самого маленького веса находящегося в map, то вставляем эту пару в map (в конец), а пару с минимальным map выкидываем. Иначе не вставляем ничего. Тут я меня ступор. |
|||
|
||||
IValdemar |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.1.2012 Репутация: нет Всего: нет |
||||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
допустим в мапе лежат такие данные
нужно вставить
какую пару нужно выкинуть, какую вставить? как вообще будет выглядеть мап после такой вставки ? расскажи поподробнее о задаче. м.б. для неё вообще не нужен мап. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
IValdemar |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.1.2012 Репутация: нет Всего: нет |
||||
|
||||
becks |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Добрый день!
Прошу прощения, не было возможности написать раньше.
Да, изначально пустой.
Нет, я размер не задаю. Его задает юзер, по своему усмотрению.
Да, извиняюсь что без примера, давайте только поменяем этот, как показано выше. Причина : в мап кладутся номер предложения и его вес, т.е. номер предложения уникален и в каждой новой паре он на единицу больше чем в предыдущей. Теперь вернемся к вставке. У вставляемой пары номер предложения = 4, вес = 1. В мапе находим минимальный вес: он равен 0, и соответсвтует 1 предложению. Минимальный вес меньше веса в вставляемой паре. Удаляем запись (1, 0) из мапа и вставляем в конец (4, 1). Итог: (2, 2) (3, 42) (4, 1) Нужно использовать именно мап, он требуется для других задач потом. Это сообщение отредактировал(а) becks - 26.3.2012, 16:29 |
||||||
|
|||||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
becks, в твоём контейнере в каждый момент времени будет только один элемент, а в итоге останется элемент с максимальным весом.
рассмотрим мой пример (подправленный тобой) 1. [] 2. [ (1, 0) ] <-- вставляем элемент, т.к. больше ничего нет 3. [ (2, 2) ] <-- удаляем (1, 0), т.к. его вес меньше 2 4. [ (3, 42) ] <-- удаляем (2, 2), т.к. его вес меньше 42 5. [ (3, 42) ] <-- НЕ вставляем элемент (4, 1), т.к. его вес меньше минимального -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
becks |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 6.7.2010 Репутация: нет Всего: нет |
Вы забыли про размер контейнера, этап №2 мы будем производить пока не заполним его полностью.... при добавлении новых уже будем производить проверку..
|
|||
|
||||
IValdemar |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.1.2012 Репутация: нет Всего: нет |
Попробуй так:
Не думаю что это самый оптимальный вариант, но работать должен. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Решение IValdemar, имеет право на существование, но оно не эффективно.
При каждом добавлении, будет происходить пробежка по всему массиву, в поисках минимального. Можно сделать и по-быстрее, в духе С/С++. ![]() I. Самый простой вариант будет если задачу можно разделить на части:
1. Самое простое, воспользоваться boost::multi_index 2. Если аллергия на буст, можно сделать все и вручную (есть несколько способов) |
|||
|
||||
IValdemar |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.1.2012 Репутация: нет Всего: нет |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
http://www.boost.org/doc/libs/1_48_0/libs/...rial/index.html вот пример оттуда. по нему всё сразу понятно - http://www.boost.org/doc/libs/1_48_0/libs/...ample/basic.cpp -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
||||
|
||||
IValdemar |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 10.1.2012 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |