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

STL для новичка! - C++

Восстановить пароль Регистрация
 
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
27.03.2014, 01:59     STL для новичка! #1
Здравствуйте! подскажите пожалуйста мне, дураку(только начал изучать STL) ответ на такой вопрос! что нужно подставить в 19 строку?
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
#include <string.h>
#include <stdio.h>
#include "list.h"
#include "student.h"
 
int main(){
    printf("\t\t\tSupported commands:\n");
    printf("\t\t\tpb - (push_back) add element to the end of list\n");
    printf("\t\t\tpf - (push_front) add element to the front of list\n");
    printf("\t\t\tdel - delete element for order number\n");
    printf("\t\t\tlist - show all elements in the list\n");
    printf("\t\t\tfind - find student by name\n");
    printf("\t\t\tclear - remove all elements from the list\n");
    printf("\t\t\tsave - save the list to a file using fstream\n");
    printf("\t\t\tload - retrieve a list of the file using fstream\n");
    printf("\t\t\texit - quit from program\n\n");
 
    Student x;
    List<.....> s;
    s.List();
    char cmd[50];
    for (;;){
        printf("enter command>");
        fflush(stdin);
        gets(cmd);
        if (strcmp(cmd, "pb")==0){
            x.getName();
            s.push_back(&x, sizeof(Student));
        }
        if (strcmp(cmd, "pf")==0){
            x.getName();
            s.push_front(&x, sizeof(Student));
        }
        if (strcmp(cmd, "list")==0){
            Student *p;
            s.reset();
            while(s.moveNext()){
                p = (Student*)s.getCurrent();
                x.setName();
            }
        }
        if (strcmp(cmd, "find")==0){
            printf("\nEnter student name:");
            scanf("%s", x.name);
            Student *p;
            p = (Student*)s.find(&x,cmp_student_by_name);
 
            if (p!=NULL){
                printf("\nFound: ");
                printf("%s\t", p->name);
                printf("%d\t", p->order);
                printf("%f\n", p->average_point);
            } else {
                printf("Student does not found\n\n");
            }
        }
        if (strcmp(cmd, "clear")==0){
            s.clear(); // Уничтожаем все элементы и освобождаем память
        }
        if (strcmp(cmd, "exit")==0){
           break;
        }
        if (strcmp(cmd, "del")==0){
            int i;
                printf("Input order number: ");
                scanf("%d", &i);
                s.del(i);
            }
        if (strcmp(cmd, "save")==0){
            string l="info.txt";
            s.saveTo(l,sizeof(Student));
        }
        if (strcmp(cmd, "load")==0){
             s.loadFrom("info.txt",sizeof(Student));
        }
 
        }
 
    s.clear();
    return 0;
}
Добавлено через 1 минуту
Извините забыл...
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
template <class T>
class List {
 
    typedef struct l_node{
        T *data;        // Указатель на данные
        l_node *next;   // Указатель на следующий элемент
    } list_node;
    private:
        list_node *head; // Указатель на голову списка
        list_node *current; // Указатель на текущий элемент списка
        int list_size;      // Кол-во элементов списка
        T tmp;
    public:
        List();
        ~List();
        // Возвращает кол-во элементов в списке
        int getListSize();
        // Добавление в список
        bool push_back(const T &data);
        bool push_front(const T &data);
        // Удаление i-того элемента списка
        bool del(int i);
        // Удаление всех элементов списка list,
        // освобождение памяти.
        void clear();
        // Сброс внутреннего указателя списка.
        void reset();
        // Перемещает внутренний указатель списка list на следующий элемент.
        bool moveNext();
        // Возвращает указатель на данные текущего элемента списка,
        // либо NULL - если текущий элемент не существует.
        const T &getCurrent();
        // Возвращает true если элемент найден
        // результат поиска должен быть записан в параметр result
        bool find(T &val, T &result);
        // Сохраняет список в файл с именем fileName
        // возвращает false в случае ошибки
        bool saveTo(const string &fileName);
        // Загружает список из файла с именем fileName
        bool loadFrom(const string &fileName);
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 01:59     STL для новичка!
Посмотрите здесь:

Олимпиадка для новичка на С++ C++
C++ Учебник для новичка по с++?
Компилятор для новичка C++
посоветуйте сайт для новичка с++ C++
OpenGL для новичка C++
Важно для новичка C++
C++ Книги по c++ для новичка
C++ Отличия в C++11 для новичка

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GetVariable
 Аватар для GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
27.03.2014, 07:56     STL для новичка! #2
==
C++
1
List<Student> s;
==

При компиляции, вместо
C++
1
T *data;
, подставится
C++
1
Student *data
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
27.03.2014, 09:50     STL для новичка! #3
Цитата Сообщение от yur@ Посмотреть сообщение
только начал изучать STL
причем тут STL вообще?
Цитата Сообщение от yur@ Посмотреть сообщение
C++
1
List<.....> s;
вопрос я так полагаю связан с шаблоном, раз у Вас список студентов логично что
C++
1
List<Student> s;
----------------------
Цитата Сообщение от yur@ Посмотреть сообщение
C++
1
s.List();
wtf? это что Вы попытались вызвать констуркутор по умолчанию? я что то сомневаюсь что компиль это проглотит, к тому же Вы его уже вызвали тут
C++
1
List<Student> s;
Добавлено через 2 минуты
Цитата Сообщение от yur@ Посмотреть сообщение
s.push_back(&x, sizeof(Student));
У Вас разве есть метода принимающий push_back(Student *, size_t) ?
Цитата Сообщение от yur@ Посмотреть сообщение
C++
1
bool push_back(const T &data);
Вызывать тогда так
C++
1
s.push_back(x); //адрес x тут брать не надо
Yandex
Объявления
27.03.2014, 09:50     STL для новичка!
Ответ Создать тему
Опции темы

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