4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
|
||||||
1 | ||||||
Реализовать итераторы begin() и end() для списка04.10.2016, 11:19. Показов 5728. Ответов 14
Метки нет (Все метки)
Есть список. и операции для него
1)разыменование 2)инкремент (префиксный и постфиксный) 3) == 4) != Для того,чтобы проверить работоспособность написанных методов ,мне нужно написать begin и end.в этом и проблема я считаю,что нужно просто возвращать сами узлы-но компилятор ругается. head-указатель на 1-ый узел tail-на след за последним Заодно посмотрите пж другие функции,мб в них ошибка
0
|
04.10.2016, 11:19 | |
Ответы с готовыми решениями:
14
Итераторы begin и end Реализовать итераторы для списка C++: итераторы по умолчанию, пустые итераторы, end() Чем отличаются итераторы ::begin и ::cbegin? |
Любитель чаепитий
|
|
04.10.2016, 12:59 | 2 |
Kristina_S,
Посмотрите на строку 43 повнимательнее, там скрывается ошибка. Итератор у Вас не создаётся потому, что конструктора в классе iterator подходящего нету.Так же стоит присмотреться к строке 105, а особенно к первому блоку цикла for .P.S. В цикле for можно оставлять пустые блоки, то есть делать даже так: for(;;) Но осторожнее, это бесконечный цикл. Ну это так, если Вы поэтому ошиблись с ним.
0
|
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
|
||||||
04.10.2016, 15:53 [ТС] | 3 | |||||
1)насчет строчки 105 - этой функции здесь быть не должно) не то скопировала)
2)а по поводу конструктора-там нужен конструктор с одним аргументом? вида
0
|
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
|
|
04.10.2016, 16:50 [ТС] | 5 |
вы имеете ввиду что нужно определить операцию присваивания еще дополнительно? а разве поля не будут буквально сравниваться?
а конструктор верно написа?
0
|
Любитель чаепитий
|
|
04.10.2016, 17:39 | 6 |
Что Вы имеете ввиду? Они и должны сравниваться, это же operator==, он возвращает результат сравнения двух классов между собой( в классической реализации ).
А у Вас операция присваивания, но С++ такой язык, что он позволяет такое делать. А возвращаемое значение этой функции будет зависеть от того равно ли node 0. Если не равно, то возвращается true, иначе false. Вроде да.
0
|
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
|
|||||||||||
04.10.2016, 20:53 [ТС] | 7 | ||||||||||
спасибо,проглядела)Только вот теперь ее вообще не видит компилятор .Выдает ошибку,мол "отсутствует != удовлет этим операндам" при написании этой конструкции.
0
|
Любитель чаепитий
|
||||||
04.10.2016, 21:10 | 8 | |||||
Потому что у Вас в классе
iterator сравниваются iterator и Single node* , а такого оператора != , в котором сравнивались бы iterator и iterator -- нет.Решение
Вы что, ищите лёгкого пути?
Может, всё-таки сами попробуете?
Как хотите.. Эх
0
|
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
|
||||||
04.10.2016, 21:22 [ТС] | 9 | |||||
а в операторе != не нужно ли написать
0
|
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
|
|
04.10.2016, 21:57 [ТС] | 11 |
большое спасибо что помогли)
Добавлено через 25 минут зато теперь оно ругается на то,что в конструкторе итератора происходит переполнение стека((
0
|
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
|
||||||||||||||||
04.10.2016, 22:14 [ТС] | 13 | |||||||||||||||
Сам список (без итераторов )точно полностью рабочий
.h
main
0
|
4 / 1 / 0
Регистрация: 09.10.2015
Сообщений: 204
|
|
05.10.2016, 16:28 [ТС] | 15 |
Я прошел -она падает на конструкторе.не могу понять что не так(((
0
|
05.10.2016, 16:28 | |
05.10.2016, 16:28 | |
Помогаю со студенческими работами здесь
15
Итераторы (пример использования итератора для шаблона, к примеру списка) Пояснить код sort(p.begin(), p.end(); Заменить слова “begin” и “end” на “( “ и “)” соответственно Компилятор не видит реализацию методов begin() и end() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |