Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с контейнером multiset 
:(
    Опции темы
BigLes
Дата 12.1.2010, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



мне нужно сделать контейнер на клас а потом его заполнить, но когда я по итертору обращаюсь к следующепу елементу, зависает программма. Помогите пожалуйста.

#include <set>

using namespace std;

class nameio
{
int opprt;
char name[20];
public:
int getopprt()
{
return opprt;
};
void setname(char _k[20])
{
strcpy(name,_k);
};
void setopprt(int _h)
{
opprt=_h;
};
char *getname()
{
return name;
}
};
multiset<nameio> im;
multiset<nameio>::iterator it;

...

void g()
{
it=im.begin();
}
void prodaga(int h,char k[20])
{
(*it).setopprt(h);
(*it).setname(k);
++it;
}

вот где-то здесь она и виснет...
PM MAIL   Вверх
Earnest
Дата 12.1.2010, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



1) multiset требует определение оператора < или соответствующего функтора, а я его у тебя не вижу.
2) поскольку ты меняешь все члены данных, каков бы ни был смысл сравнения, оно наверняка становиться неверным.

Multiset - это сортированный набор данных. Меняя значения данных, ты разрушаешь сортировку и сам набор, соответсвенно.

Я вообще не понимаю, как это у тебя скомпилировалось. По идее, данные в наборе считаются константными (и он предоставляет только константный итератор). Хотя это может зависить от реализации STL. Твоя - явно нехорошая, раз позволяет жто компилировать.



--------------------
...
PM   Вверх
BigLes
Дата 12.1.2010, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Earnest знаю что константный, знал бы ещё это наш препод( ему по-нормальному не подходит, надо делать так...
PM MAIL   Вверх
Earnest
Дата 13.1.2010, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Возможно, ты его неправильно понял? Нельзя менять ключи! 


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


 




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


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

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