|
Модераторы: bsa |
|
xvr |
|
||||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
И не должен. Где какое нибудь присваивание?
Копируется как обычные указатели.
|
||||||
|
|||||||
шарлотта |
|
||||||||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Написала так:
Не могу понять, в чем ошибки... Это сообщение отредактировал(а) шарлотта - 27.5.2017, 00:36 |
||||||||
|
|||||||||
шарлотта |
|
||||||||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
С первым разобралась, большое спасибо!
Во алгоритме CopyIf возникает ошибка
указывает на
Контейнер dest_beg пустой, и там не может быть выполнено ++. Но как исправить данную ошибку? Это сообщение отредактировал(а) шарлотта - 27.5.2017, 22:58 |
||||||||
|
|||||||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
никак не надо исправлять. (можно исключение кинуть) операция ++ над итератором указывающим на "end()" не имеет смысла, и должна вызывать исключение. Это сообщение отредактировал(а) volatile - 28.5.2017, 10:09 |
|||
|
||||
шарлотта |
|
||||||||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Но как тогда сделать копирование?
Если вызываю так, тоже выдает ошибку.... И мне кажется, так я совсем бред написала. Но как сделать правильно? Не совсем понимаю, каким должен быть контейнер, куда копирую... Вызвала так
Но, мне кажется, это бред полнейший... А реализация сортировки еще более странная. Но не представляю, как сделать нормально...
Это сообщение отредактировал(а) шарлотта - 28.5.2017, 12:21 |
||||||||
|
|||||||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
шарлотта, у меня к вам другой вопрос. А как именно по-вашему должен работать ваш CopyIf()?
Не секрет, что весь этот ваш контейнер - это попытка собсственными силами написать часть STL А std::copy из STL, именно так и работает. т.е. он будет выкидывать исключение, если принимающий контейнер имеет меньший размер чем источник копирования. посмотрите здесь я привел пример и комментарии: http://codepad.org/r3XR7b81 Видимо ваш алгоритм должен работать каким-то другим неведомым способом? Ну дык приведите ТЗ, опишите словами что он должен делать, например для 3 случаев: если src.size() == dst.size() если src.size() < dst.size() если src.size() > dst.size() // куда добавлять в конец, в начало, в середину, затирать ли имеющиеся? А вот когда вы опишите словами, поведение вашего CopyIf(), вы и сможете сами составить программу. Добавлено через 2 минуты хотя я бы не советовал придумывать неведомо что, а оставил именно так как и в СТЛ |
|||
|
||||
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Поняла, согласна с Вами, спасибо большое!
|
|||
|
||||
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Попробовала сделать сортировку так, но не сортирует.
Это сообщение отредактировал(а) шарлотта - 28.5.2017, 14:05 |
|||
|
||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Ну пузырёк я проще как-нибудь бы сделал, зачем накручивать. вся его прелесть в простоте.
проверяйте Добавлено через 52 секунды вообще-то предикат неплохо использовать вместо жесткого условия, чтоб универсальность получить... |
|||
|
||||
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Как все просто. Спасибо Вам огромное!
|
|||
|
||||
xvr |
|
||||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Смотрим вызов:
Смотрим реализацию разыменования в итераторе:
Разыменование должно выглядеть так:
Про copyIf - он копирует в уже существующий контейнер (как в stl). Если вам нужно добавлять в пустой контейнер, то (так же, как в stl) нужно сделать специальный итератор, который при инкременте добавляет элемент в контейнер (см например std::back_inserter), и вызывать с ним |
||||||
|
|||||||
шарлотта |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 55 Регистрация: 1.3.2017 Репутация: нет Всего: нет |
Большое спасибо!
|
|||
|
||||
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |