Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> deque 
V
    Опции темы
ZufuS
Дата 8.12.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 237
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



Надо из дека убрать элементы, которые меньше или равны какому-нибудь из остальных. (по-очерёдно, чтобы среди равных один остался, если он не является меньшим или равным по отношению к остальным).
Есть дек, состоящий из деков целых чисел, перегружен оператор<= для двух деков целых чисел.
Пытаюсь сделать примерно так:
Код

void f(deque<deque<int> > &d)
{
    deque<deque<int> >::iterator i,j;
    for(i=d.begin(); i!=d.end(); ++i)
    {
        for(j=d.begin(); j!=d.end(); ++j)
        {
            if(i==j)
            {
                ++j;
                continue;
            }
            if(*i<=*j)
            {
                i=d.erase(i);
                break;
            }
        }
    }
}


Это сообщение отредактировал(а) ZufuS - 8.12.2007, 10:36
PM   Вверх
UnrealMan
Дата 8.12.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Код

void f(std::deque<std::deque<int> > &d)
{
    if (d.size())
        d.assign(1, *std::max_element(d.begin(), d.end()));
}


Это сообщение отредактировал(а) UnrealMan - 8.12.2007, 12:17
PM MAIL   Вверх
ZufuS
Дата 8.12.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 237
Регистрация: 12.7.2006

Репутация: нет
Всего: нет



К сожалению, сейчас не имею возможности проверить код, но по-моему после выполнения этой функции дек урежится до одного элемента. Но он может иметь несколько максимальных элементов. Оператор <= возвращает true, когда каждый элемент первого аргумента меньше или равен каждому соответсвующему элементу второго аргумента.
Если, например, дек состоит из следующих деков:
1, 3
2, 1
1, 1
После выполнения функции должны остаться
1, 3
2, 1
а 1,1, поскольку не превышает остальные деки ни одним элементом, должен удалиться

Это сообщение отредактировал(а) ZufuS - 8.12.2007, 14:59
PM   Вверх
UnrealMan
Дата 8.12.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 722
Регистрация: 30.3.2006

Репутация: 27
Всего: 32



Цитата(ZufuS @  8.12.2007,  14:52 Найти цитируемый пост)
Оператор <= возвращает true, когда каждый элемент первого аргумента меньше или равен каждому соответсвующему элементу второго аргумента.

Ну, тогда мой код не подходит.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.