Форум: Форум C++Разное
Новые темы: 00
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Итераторы для своего контейнера
 
 автор: AntonCh   (01.12.2017 в 18:25)   письмо автору
 
 

Реализовать групповое добавление, удаление и замена элементов. Группа представляется диапазоном итераторов. Реализовать методы поиска элементов и групп элементов.
Написал простое добавление элемента, как прикрутить сюда итераторы?
#include "stdafx.h"

using namespace std;
#include <iostream>
#include <conio.h>  
#include <ctype.h> 
#include <windows.h>


template<typename T>
struct Link {
T data;
Link* next;
};

template<typename T>
class List {
Link<T>* first;
public:
List() :first(nullptr) {};
List(const List<T>& Source);
~List() {
Link<T> *current = first;
while (current != nullptr) {
Link<T>* temp = current;
current = current->next;
delete temp;
}
}
void Add(T Data);
void Show();
template <typename T> friend void ShowA(List<T>& list);
template <typename T> friend void AddA(List<T>& list, T Data);
};





template<typename T>
List<T>::List(const List<T>& Source)
{
Link<T> *temp = Source->first;
Link<T> *A,*B = NULL;


while (temp != NULL) 
{
A = new Link<T>;
A->data = temp->data;
if (B != NULL)
B->next = &A;
else
first = &A;
B = &A;
temp = temp->next;
}
}


template<typename T>
void List<T>::Add(T Data)
{
Link<T> *temp = first;
Link<T> *NewNode = new Link<T>;

if(temp != NULL)
while (temp->next != NULL) temp = temp->next;

NewNode->data = Data;
NewNode->next = NULL;
if (temp != NULL)
temp->next = NewNode;
else
first = NewNode;
}


template<typename T>
void List<T>::Show()
{
Link<T> *temp = first;
while (temp != NULL) {
cout << (T)temp->data << endl;
temp = temp->next;
}
}

template <typename T>
void ShowA(List<T>& list)
{
list.Show();
}

template <typename T>
void AddA(List<T>& list, T Data)
{
list.Add(Data);
}

int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

List<int> Test;
AddA(Test, 3);
AddA(Test, 4);
cout << "данные"<<endl;
ShowA(Test);
_getch();
return 0;
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования