Loading...
Vankata83 avatar Vankata83 72 Точки

5.Sequences

Доста се пообърках на тази задача от последното упражнение. Хайде да видим какво съм разбрал и какво не.

1.Трябва да си направим собствен итератор да речем class Iterator, който да работи върху нашия клас Sequence.

2.Трябва да пренапишем begin() и end(), които ще се намират в Sequence и чрез тях да върнем Iterator. Тук идва моето затруднение - по какъв точно начин да стане това, нещо от сорта на това ли е Iterator<Sequence> begin(){...} ? Не мога да схвана връзката тук.

3.В Iterator трябва да оъвърлоуднем методите ++, != и *. Т.е те трябва да работят върху структурата от данни намираща се в Sequence, да речем някакъв вектор.

Тагове:
0
C++ Advanced
galin_kostadinov avatar galin_kostadinov 166 Точки

Привет!

1.  Класа итератор трябва да ти е темплейтен. В него ще имаш поле, което ще държи референция към контейнер(вектор), както и поле което ще ти държи индекс, който ще увеличаваш и чрез него ще връщаш конктретна стойност от вектора.

template<typename T>
class Iterator {...}

2. В class Sequence

Iterator<T> begin() {
//Трябва да направиш проверка ако нямаш нищо в котнейнера...
    return Iterator<T>(elements, index); // index = 0;
}

Подобно е и за end, като помисли каква стойност ще сложиш за индекса.

Друг вариант е да направиш статични методи в клас Iterator и чрез тях да създаваш обект от клас Iterator - един за begin и един за end. 

//Метод в class Sequence
Iterator<T> begin() {
    return Iterator<T>::begin(this->elements);//Метод в клас Iterator
}

3. От клас итеретор ще си създадеш обекти и методите ще работят върху тях. Да там ще имаш референция към вектора, който си го инициализирал в клас Sequence.

Overload методите ще са -  увеличаване на индекса(проверки); индекса различен ли е от еnd_index(на този от end); връщане на референция към стойността на дадения индекс.

Поздрави!

1
26/01/2020 19:54:49
ThomasMore avatar ThomasMore -19 Точки

Precisely when we overlook work out, dismissal to get sufficient rest, or reliably value an offensive eating plan, we will discover it legitimately hard to marshal the vitality and clearness with which to finish our piece Article Of The Week

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.