1

Тема: Робота з контейнером List

Потрібна допомога з виведенням та пошуком елементів в списку. Моя проблема полягає в тому що я не знаю як звернутися до елементів списку і вивести їх. В даному коді я маю доробити функцію виведення і функцію пошуку елемента списку за іменем.
Ось повний опис завдання:
Динамічний список (2 класи: клас "Елемент списку" і клас "Список" перебувають у відношенні агрегації)
Конструктори: за замовчуванням, з параметрами та копіювання.
Деструктор.
Функції:
вставлення елемента з голови (хвоста) у заданому місці;
виведення списку на екран;
пошук елемента списку;
очищення списку;

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<iomanip>
#include<list>
#include<string>
#include<type_traits>
#include<Windows.h>
#include<iterator>
using namespace std;
class Element
{
private:
    string name;
    string surname;   
public:
    Element(string name, string surname)
    {
        this->name = name;
        this->surname = surname;
    }
    Element(const Element& element)
    {
        this->name = element.name;
        this->surname = element.surname;
    }
    Element() = default;
    ~Element() {}
    string GetName()
    {
        return name;
    }
    string GetSurName()
    {
        return surname;
    }    
    void Input()
    {
        cout << "Enter the name: ";
        cin >> name;
        cout << "Enter the surname: ";
        cin >> surname;
    }    
};
class List 
{
private:
    list<Element> Elements;
public:
    void Show()
    {
        list <Element> ::iterator it = Elements.begin();   
        ...........        
    }
    void Find(string name)
    {
        .......
    }
    void Clear()
    {
        Elements.clear();
    }
    void Add(const Element& Obj, int index)
    {
        list <Element> ::iterator it = Elements.begin();
        if (index >= Elements.size())
        {
            Elements.push_back(Obj);
        }            
        else if (index >= 0)
        {
            advance(it, index);
            Elements.emplace(it, Obj);
        }
    }    
};
void main()
{    
    int size = 0;
    List list;
    bool index = false;
    while (index != true)
    {
        Element item;
        cout << "\t Menu: \n";
        cout << "1.View the list\n";
        cout << "2.Add a new element\n";
        cout << "3.Find the element\n";
        cout << "4.Clear the list\n";
        cout << "5.Exit\n";
        cout << "----------------\n";
        cout << "Enter the number: ";
        int menu;
        cin >> menu;
        system("cls");
        switch (menu)
        {
        case 1:
        {
            if (size == 0)
            {
                cout << "The list is empty";
            }
            else
            {
                list.Show();
            }
            _getch();
            system("cls");
            break;
        }
        case 2:
        {
            int pos;
            item.Input();
            cout << "Enter the position of the item to insert ";
            cin >> pos;
            list.Add(item,pos);
            size++;
            system("cls");
            break;
        }
        case 3:
        {
            if (size == 0)
            {
                cout << "The list is empty";
            }
            else
            {
                string name;
                cout << "Enter the name: ";
                cin >> name;
                list.Find(name);
            }
            _getch();
            system("cls");
            break;
        }
        case 4:
        {
            list.Clear();
            cout << "List was cleared";
            _getch();
            system("cls");
            break;
        }
        case 5:
        {
            index = true;
            break;
        }
        default:
        {
            cout << "A non-existent menu item is selected\n";
            _getch();
            system("cls");
        }
        }
    }
    _getch();
}

2

Re: Робота з контейнером List

class List 
{
private:
    list<Element> Elements;

Це що, таке витончене знущання? Якщо користуєтеся стандартним std::list - то нащо вам ваша обгортка?

3

Re: Робота з контейнером List

koala написав:
class List 
{
private:
    list<Element> Elements;

Це що, таке витончене знущання? Якщо користуєтеся стандартним std::list - то нащо вам ваша обгортка?

Не зрозумів що ви маєте на увазі

4

Re: Робота з контейнером List

У вас завдання реалізувати список.
Для цього ви берете стандартний список.
А в чому тоді полягає ваша реалізація?
Якщо вам дають завдання зробити, наприклад, годівничку, а ви приносите китайську з власним написом - це виконане завдання чи ні?