Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.07.2016
Сообщений: 30

Адаптация контейнера под STL

25.08.2017, 21:30. Показов 1120. Ответов 2

Студворк — интернет-сервис помощи студентам
Учу C++, на данный момент было задание: реализовать односвязный список.
Пока что реализовано не все, но возник такой вопрос: "Почему он не работает с функциями из STL?"
Буду очень благодарен, если укажите на косяки.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
template <typename Elem> 
struct Link {
    Elem data;
    Link* next;
 
    Link(const Elem d) {
        data = d;
        next = nullptr;
    }
 
    Link() {
        data = Elem();
        next = nullptr;
    }
};
 
template <typename T>
class slist {
public:
    class iterator;
    slist() { 
        head = curr = tail = new Link<T>(); 
        size = 0;
    }
    
    slist(const T data) { 
        head = curr = tail = new Link<T>(data); 
        size = 1;
    }
    
    ~slist();
 
    void push_back(T data);
    
    int get_size() {
        return size;
    }
    
    iterator begin() { return iterator(head); }
    iterator end() { return iterator(tail); }
 
private: 
    int size;
    Link<T>* head;
    Link<T>* tail;
    Link<T>* curr;
};
 
template <typename T> class slist<T>::iterator {
private:
    friend class slist;
    Link<T>* current;
public:
    iterator() : current(curr) {}
    iterator(Link<T>* data) noexcept : current(data) {}
 
    iterator& operator++() {
        if (current) current = current->next;
        return *this;
    }
    
    T& operator*() { return current->data; }
};
 
template <typename T>
void slist<T>::push_back(T data) {
    Link<T>* nLink = new Link<T>(data);
    if (size == 0) {
        head->data = data;
        curr->data = data;
        size = 1;
    }
    else {
        while (curr->next) curr = curr->next;
        curr->next = nLink;
        tail = curr;
        size++;
    }
}
template <typename T>
slist<T>::~slist (){
    while (curr) {
        Link<T> *tmp = curr;
        curr = curr->next;
        delete tmp;
    }
    delete head;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.08.2017, 21:30
Ответы с готовыми решениями:

Из STL контейнера
Из STL контейнера создать 3-х мерный массив и класс который содержит этот 3-х мерный массив и вывод координат(пользователь вводит...

Выбор контейнера в STL
Здраствуйте! Нужно выбрать к этой задаче контейнер STL, который более выгодно подойдет, кроме вектора. Я думаю, что deque или map Помогите...

Обработка STL контейнера vector
Текст дан в виде вектора. Отсортировать элементы этого вектора и превратить на два списка так, чтобы в первом были только те элементы,...

2
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
26.08.2017, 06:37
Цитата Сообщение от A1lexen Посмотреть сообщение
Почему он не работает с функциями из STL
О каких функциях речь?
0
17 / 16 / 3
Регистрация: 18.08.2017
Сообщений: 54
26.08.2017, 12:14
Удовлетворяет ли итератор требованиям?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.08.2017, 12:14
Помогаю со студенческими работами здесь

Возврат контейнера STL из функции
Как правильно вернуть STL контейнер из функции НЕ ПО ЗНАЧЕНИЮ? std :: map&lt;std :: string, BTSComponent*&gt; BTSObject ::...

Алгоритм выбора контейнера STL
Привет. Существует ли некая таблица по таким контейнерам с кратким описанием плюсов и минусов каждого по сравнению с другими? И в обще...

STL итератор на конец контейнера
Подскажите пожалуйста у меня задача сделать дерево и слизать интерфейс с STL std::map. Вопрос в следующем: когда мы обходим map итератором...

Реализация примитивного STL совместимого контейнера
Как то застрял на этом. Как правильно объявить все typedef для итератора? Нужен минимальный набросок такого контейнера.template&lt;typename...

Структура, с использованием контейнера библиотеки STL
Помогите, пожалуйста,с задачкой. Следующие задания реализовать в виде класса, используя для хранения информации контейнер стандартной...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru