187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|||||||||||
1 | |||||||||||
Сортировка для контейнера с указателями28.08.2012, 12:29. Показов 2885. Ответов 26
Метки нет (Все метки)
Понадобилось сделать контейнер указателей, но встала проблема сортировки и типа контейнера :
Как перегрузить сравнение для указателей, а так же как намекнуть set, что указатели равны, и он не multiset? Не по теме: p.s Нормально ли пренебрегать инкапсуляций, если класс, имеющий контейнер объектов/указателей на объекты другого класса - приватит этот контейнер, а класс, находящийся в этом контейнере - публичный, но при этом нигде больше не используется и не имеет статический методов? Что-то типа :
0
|
28.08.2012, 12:29 | |
Ответы с готовыми решениями:
26
Сортировка Шелла для контейнера List библиотеки STL Сортировка с указателями Быстрая сортировка с указателями Сортировка кучей с указателями |
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|||||||||||
28.08.2012, 15:46 [ТС] | 3 | ||||||||||
Хм, странно. Думал не сработает, раз перегрузка не сработала.. Почему так? Такое ощущение, что, хоть я и храню в контейнере указатели, они разыменовываются сами..
p.s А что насчет инкапсуляции? Не по теме:
Добавлено через 1 час 45 минут И ещё вопрос. Хотелось бы иметь перегруженную функцию find для set (не способом &(MYSTRUCT)num, и не способом наследования от set) примерно так :
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
28.08.2012, 15:54 | 4 |
1
|
Каратель
|
|||||||||||
28.08.2012, 15:56 | 5 | ||||||||||
std::find_if и собственный предикат для него
Добавлено через 1 минуту можно, только тогда уж вместо
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
28.08.2012, 16:05 [ТС] | 6 |
grizlik78, проблема в том, что первый не видит второй, либо наоборот, ведь нельзя указать прототип класса. Хотя, даже если каким-то чудом увидит, вопрос будет в размерах. Ведь размер A зависит от B, а B от A. В таком случае, размер и A, и B - сколько угодно.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
||||||
28.08.2012, 16:13 | 7 | |||||
То есть в вопросе ошибка, там ведь нет взаимозависимости. Тогда так:
Хм. Почему нельзя? Предварительное объявление есть. У указателей размеры одинаковы и известны. Так что никаких проблем с размерами нет, пока указатель не попытаются разыменовать.
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
28.08.2012, 16:14 [ТС] | 8 |
grizlik78, и у тебя такое прокатывает? У меня ругань на class B;. Говорит, что переобъявлен класс : o
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
28.08.2012, 16:16 | 9 |
Хм. нельзя ли пример, который можно попытаться скомпилировать? Вообще, предварительное объявление работает, проверено электроникой. Конкретно этот пример не проверял пока.
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
||||||
28.08.2012, 16:17 [ТС] | 10 | |||||
Вот сама ошибка : error C2039: 'a' : is not a member of 'B'
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
||||||
28.08.2012, 16:21 | 11 | |||||
Вот так компилируется:
Компилятор какой?
1
|
Каратель
|
|
28.08.2012, 16:22 | 12 |
nexen, http://liveworkspace.org/code/... 3bfcab4917 ошибок нет
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
28.08.2012, 16:23 [ТС] | 13 |
Jupiter, find_if идет за O(n). Если перегрузить find - то O(logN)
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
28.08.2012, 16:24 | 14 |
Это не на переобъявление. Это переменная 'a' не создалась, видимо из-за неизвестности vector, который в пространстве std.
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
28.08.2012, 16:26 [ТС] | 15 |
grizlik78, оу. Чувствую себя теперь.. не очень >_<""
А вот про find всё же интересно.
0
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
28.08.2012, 16:37 [ТС] | 17 |
Jupiter, таки все указатели отсортированы именно по значению num. Ну а раз я ищу тоже по значению num, то и должно быть logN, разве нет?
0
|
Каратель
|
|
28.08.2012, 17:32 | 18 |
да все верно, но сделать перегрузку find без наследования нельзя
как вариант сделать свою функцию(глобальную) которая будет создавать MYSTRUC с нужным значением и вызывать метод find для мапы
1
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|||||||||||
28.08.2012, 18:37 [ТС] | 19 | ||||||||||
Хочу вернуться к функторам.
Возможно ли сделать так :
error C2227: left of '->_u_ID' must point to class/struct/union/generic type при том, что указано так :
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
28.08.2012, 18:52 | 20 |
указаны декларации. чтобы обращатся к методам\мемберам класса, в точке этого обращения класс уже должен быть определен, простого объявления недостаточно. т.е. перед кодом b->... должно быть определение или инклуд с определением класса Room, User и т.п.
1
|
28.08.2012, 18:52 | |
28.08.2012, 18:52 | |
Помогаю со студенческими работами здесь
20
Сортировка контейнера list Сортировка ассоциативного контейнера! Сортировка одномерного массива с указателями Сортировка элементов массива Указателями сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями Алгоритмы сортировки (сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями). Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |