![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| NiCketT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 10.9.2007 Репутация: нет Всего: нет |
Не пойму одну фишку. Добавляю елемены в контейнер, а .size() постоянно показывает только один елемент
Матрицы и числа разные, а в множество ни то, ни другое, не добавляется. Почему? http://paste.org/index.php?id=2939 |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
так ты добавляешь только один элемент, вот тебе один и добавляется.
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
NiCketT, ты знаешь, что в std::set нельзя поместить более одного одинакового объекта? Более того, для корректной его работы нужно, чтобы для классов хранимых объектов был определен operator<.
|
|||
|
||||
| NiCketT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 10.9.2007 Репутация: нет Всего: нет |
bsa,
неи, не знал. мне надо чтоб матрицы записывались в какойто контейнер с отброской повторений. Я так думал set это какраз такой (нато оно й множество, чтоб повторение отбрасывать) Дальше както следует сделать сортировку этих матриц по одном из двух ключей - unsigned prod и unsigned cost. Как это лучше организовать? |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
NiCketT, я тебе и написал, что std::set хранит только одну копию объекта. Т.е. если ты имеешь два равных матрицы и их запихаешь в std::set, то в нем окажется только одна.
std::set хранит данные в уже отсортированном виде (используется operator<). operator< используется и для выявления равных объектов. Если тебе нужно сортировать как-то иначе, то используй копирование в вектор с последующей сортировкой (с использованием своего компаратора). |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
звучит так, будто тебе нужно что-то вроде Boost Multi-index Containers Library ps. bчтобы множество не было отсортированным, в tr1 (и boost) добавлены контейнеры unordered_[multi]map/set |
|||
|
||||
| NiCketT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 10.9.2007 Репутация: нет Всего: нет |
дык. так мне так и надо! и матрицы на вход поступают иногда разные. это показывает вызов функции ShowMatrix(m) |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
NiCketT
ТЫ КОРРЕКТНО РЕАЛИЗОВАЛ специализацию less<matrix>? |
|||
|
||||
| NiCketT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 10.9.2007 Репутация: нет Всего: нет |
вот-такой пример работает. В чем там загвоздка?
|
|||
|
||||
| NiCketT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 10.9.2007 Репутация: нет Всего: нет |
Расчехлился - пропустил амперсанд в одном месте
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |