Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Marry9
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 24
#1

Работа с STL list + пропись List.h - C++

18.11.2014, 19:54. Просмотров 1235. Ответов 28
Метки нет (Все метки)

Здравствуйте! Помогите, пожалуйста, разобраться с STL list.
Нужно сделать программу в которой будет содержаться класс Student, прописать добавление, изменение, удаление и поиск. List прописать самим.
как прописывать лист вообще понятия не имею, пытаюсь сделать добавление, но успехи практически никакие((
С числами все получается (list <int> L, если не прописывать лист, а вот с классом ничего не выходит(
Помогите!Или дайте аналогичный пример именно с классом

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
#include "stdafx.h"
#include <iostream>
#include <list>
#include <conio.h>
 
using namespace std;
class Student;
 
typedef list <Student> L;
typedef list <Student>::iterator it;
typedef list <Student>::const_iterator c_it;
 
class Student
{
    char* FIO, *faculty;
    int age;
public:
    Student()
    {
        FIO = new char[10];
        faculty = new char[8];
        put_info();
    }
    void show(const L & List)
    {
        for(c_it iSt = List.begin(); iSt != List.end(); ++iSt)
        {
            cout<<"ФИО "<<iSt->FIO<<endl;
            cout<<"Факультет "<<iSt->faculty<<endl;
            cout<<" AGE "<<iSt->age<<endl;
        }
    }
    Student put_info()
    {
        cout<<"ФИО \n";
        cin>>FIO;
        cout<<"AGE \n";
        cin>>age;
        cout<<"Факультет \n";
        cin>>faculty;
        return s;
    }
    
    ~Student()
    {
        delete FIO;
    }
}s;
 
 
void main()
{
    setlocale(LC_ALL, "Ru");
    Student S;
    L p;
 
    p.push_back(S);
    S.put_info();
    p.push_front(S);
 
    _getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2014, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с STL list + пропись List.h (C++):

Работа с STL <list> - C++
В общем, есть текст, программа выделяет в тексте последовательность введённую с клавиатуры(выделяет скобками {}) Например выделить...

Работа с STL list - C++
Есть некий каталог с 3 переменными (string,string,int), который нужно хранить в list Как я понимаю есть 2 решения хранения. 1....

Работа с STL. Поменять vector на list - C++
Программа должна быть написана так, чтобы достаточно было заменить в одном месте vector на list и приложение делало все то же самое. Если...

Работа с двунаправленым списком. STL <list> - C++
Помогите пожалуста найти ошибку.. 3) Даны натуральное число n, действительные числа x1,x2,....,xn . Вычислить: x1*xn+x2*xn-1+...+xn*x1...

STL list - C++
как вставить элемент в середину списка list STL? float list_insert_rand(int num) { srand (time(NULL)); int rand_num, rand_pos; ...

List STL - C++
В общем нужно создать класс STL c помощью list: CStudent.h #include &lt;string&gt; using namespace std; enum number_type{G1, G2,...

28
Marry9
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 24
21.11.2014, 18:22  [ТС] #16
А можно мне пример списка? именно такого: typedef List<любой класс, только не int> L;

Добавлено через 21 секунду
а то я совсем запуталась

Добавлено через 20 часов 23 минуты
Тогда может подскажете как перегрузить <<, чтобы в main можно было сделать так:

C++
1
2
3
4
5
6
7
8
 void main()
{
    setlocale(LC_ALL, "Ru");
    Student S;
    L t;
    t.PushBack(S.put_info());
    for(L::Iterator i = t.Last(); i!=t.End(); i++)
        cout << *i;
0
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
21.11.2014, 18:42 #17
Цитата Сообщение от nmcf Посмотреть сообщение
MrGluck, это ты мне или автору?
Это комментарии к опубликованному вами коду. Они не относятся к кому-либо конкретно ввиду того, что вы код просто скопировали и доработали. Это оставлено для того, чтобы люди, использующие данный фрагмент, учли описанные выше особенности при использовании.
0
nmcf
5520 / 4830 / 1636
Регистрация: 14.04.2014
Сообщений: 19,608
21.11.2014, 18:56 #18
C++
1
2
3
4
5
6
7
friend ostream & operator << (ostream &os, const Student &st)
{
    os << "ФИО " << st.FIO << endl;
    os << "Факультет "<< st.faculty << endl;
    os << " AGE " << st.age << endl;
    return os;
}
1
Marry9
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 24
21.11.2014, 19:17  [ТС] #19
A можно ли как-нибудь сделать так, чтобы в main можно было показать содержимое списка так:
C++
1
2
3
4
5
6
7
void main()
{
    Student S;
    L t;
    t.PushBack(S.put_info());
    for(L::Iterator i = t.Last(); i!=t.End(); --i)
        [COLOR="DarkOliveGreen"]cout << t;[/COLOR]
0
nmcf
5520 / 4830 / 1636
Регистрация: 14.04.2014
Сообщений: 19,608
21.11.2014, 19:45 #20
В обратном порядке, что ли?
C++
1
for(L::Iterator i = t.rbegin(); i!=t.rend(); ++i)
0
Marry9
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 24
21.11.2014, 19:48  [ТС] #21
нет, чтобы можно было выводить
не cout<<*i;
a cout<<t; // L t;
0
nmcf
5520 / 4830 / 1636
Регистрация: 14.04.2014
Сообщений: 19,608
21.11.2014, 19:54 #22
Т. е. чтобы весь список выводить разом без цикла?
0
Marry9
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 24
21.11.2014, 19:56  [ТС] #23
Ага
0
nmcf
5520 / 4830 / 1636
Регистрация: 14.04.2014
Сообщений: 19,608
21.11.2014, 20:00 #24
В таком виде не получится. Надо свой какой-то класс описывать.
0
Marry9
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 24
21.11.2014, 20:07  [ТС] #25
Может вы подскажете как произвести поиск, допустим по имени?
0
nmcf
5520 / 4830 / 1636
Регистрация: 14.04.2014
Сообщений: 19,608
21.11.2014, 20:10 #26
Ну так же в цикле с итератором. Проверяешь условие для каждого.
1
Marry9
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 24
22.11.2014, 02:56  [ТС] #27
Подскажите, пожалуйста, а как записать содержимое контейнера в текстовый файл?
Я понимаю, что через итераторы, но как это реализовать не пойму(
0
Nosey
1349 / 400 / 107
Регистрация: 22.10.2014
Сообщений: 863
Завершенные тесты: 2
22.11.2014, 04:04 #28
Цитата Сообщение от Marry9 Посмотреть сообщение
Подскажите, пожалуйста, а как записать содержимое контейнера в текстовый файл?
Я понимаю, что через итераторы, но как это реализовать не пойму(
При описанном:
C++
1
friend ostream & operator << (ostream &os, const Student &st)
Вот так:
C++
1
2
3
4
5
6
7
8
9
10
#include <fstream>
........
........
 
    std::ofstream outStreamFile("output.txt");
 
    for (L::iterator i = t.begin(); i != t.end(); ++i)
    {
        outStreamFile << *i << std::endl;
    }
1
Marry9
0 / 0 / 0
Регистрация: 18.11.2014
Сообщений: 24
03.12.2014, 08:44  [ТС] #29
Скажите, а как тогда считать информацию с этого же файла?
0
03.12.2014, 08:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2014, 08:44
Привет! Вот еще темы с ответами:

STL list - C++
Доброго времени суток, пока имею поверхностное представление о алгоритмах STL и функциях для контейнеров, но есть задача: требуется...

STL List - C++
Вот в чем проблема, была дана задача, решить которую надо было с помощью Deque и List, Deque надобыло оформить через STL, а List написать...

STL>>list<_Ty> - C++
Подскажите, пожалуйста. Я сейчас пытаюсь вникнуть в суть контейнеров, их свойства и функции. Так вот, создал я двун. список с помощью list,...

Удаление list STL - C++
Из списка, содержащего 100 тыс. элементов, удалить все элементы путем многократного удаления элемента из случайной позиции. Случайная...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru