Форум программистов, компьютерный форум CyberForum.ru

Реализация односвязного списка (конструктор) - C++

Восстановить пароль Регистрация
 
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
16.10.2013, 19:19     Реализация односвязного списка (конструктор) #1
Доброго времени суток.
Вот реализую односвязный список, застрял на конструкторе который принимает два итератора:
C++
1
2
3
4
5
6
List(iterator b, iterator e):head(0){
while(b != e){
push_back(*b);
b++;}
 
}
итератор к етому списку уже написан:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<class TipUzla> class Iterator{
    friend class List<typename TipUzla::value_type>;
TipUzla* p_uzla;//ekazatel' na tip uzla
Iterator (TipUzla * _p_uzla): p_uzla(_p_uzla){}
public:
void operator++(){p_uzla = p_uzla->_next;}
void operator++(int){p_uzla = p_uzla->_next;}
bool operator==(Iterator<TipUzla> newiter){return(newiter.p_uzla == p_uzla);}
bool operator!=(Iterator<TipUzla> newiter){return !(newiter.p_uzla == p_uzla);}
typename TipUzla::value_type operator*(){return p_uzla->_data;}
Iterator<TipUzla> operator+ (int _i){
Iterator<TipUzla> iter = *this;
for(int i = 0; i != _i; i++){
    if(iter.p_uzla) iter++;
    else break;
        }
        return iter;
    }
};
и сама связка
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename T>class Node{
friend class Iterator<Node<T> >;
friend class List<T>;
T _data;
Node<T>* _next;
Node() : _next(0) {}
Node(T data): _data(data), _next(0) {}
Node(T data, Node<T>* next): _data(data), _next(next) {}
Node(Node<T>* next): _next(next) {}
public:
typedef T value_type;
};
так вот когда я в main() инициализирую список как
C++
1
2
3
4
5
6
7
8
List<int> my_list;
    my_list.push_back(10);
    my_list.push_back(11);
    my_list.push_back(30);
    my_list.push_back(40);
    my_list.push_front(9);
    my_list.push_front(7);
    List<int> list1(my_list.begin(), my_list.end());
то работает, а когда
C++
1
2
int arr[] = {1, 2, 3, 4, 5};
    List<int> list1(arr, arr + 5);
то выдает ошибку.
вот моя функцие push_back:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void push_back(T data)
    {
        if (head)
        {
            Node<T> *iter = head;
            while(iter->_next!= 0)
                iter = iter->_next;
            iter->_next = new Node<T>(data);
 
        }
        else
            head = new Node<T>(data);
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2013, 19:19     Реализация односвязного списка (конструктор)
Посмотрите здесь:

Не могу понять в чем ошибка: реализация односвязного списка C++
C++ Нужна реализация односвязного списка
C++ Шаблон односвязного списка
C++ Сортировка односвязного списка
C++ Вывод односвязного списка на C
Печать односвязного списка C++
Конструктор копирования для односвязного списка C++
C++ Управление не переходит в конструктор односвязного списка

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
16.10.2013, 19:27     Реализация односвязного списка (конструктор) #2
jurok_85, а какую ошибку выдает?
jurok_85
226 / 209 / 70
Регистрация: 21.02.2013
Сообщений: 494
16.10.2013, 19:33  [ТС]     Реализация односвязного списка (конструктор) #3
|In function 'int main()':|
104|error: no matching function for call to 'List<int>::List(int [5], int*)'|
50|note: candidates are: List<T>::List(Iterator<Node<T> >, Iterator<Node<T> >) [with T = int]|
List<T>::List() [with T = int]|
List<int>::List(const List<int>&)|
||=== Build finished: 1 errors, 0 warnings ===|
Yandex
Объявления
16.10.2013, 19:33     Реализация односвязного списка (конструктор)
Ответ Создать тему
Опции темы

Текущее время: 16:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru