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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
K12
5 / 5 / 1
Регистрация: 22.08.2010
Сообщений: 99
#1

C++ и класс set, требуется релизовать - C++

09.12.2012, 15:06. Просмотров 1883. Ответов 18
Метки нет (Все метки)

Привет всем!

Ранее никогда не имел дела с контейнерными кламмами STL, возникла необходимость написать программу на С++, которая бы вела учет пассажиров на ж/д вокзале (лабораторная в институте). Параметры для учета такие: номер поезда, станция назначения, время отправления. Реализовать всё это нужно через класс SET.

Может ко смог бы помочь за вознаграждение, был бы очень рад.

Пытался сам разобраться, но даже простой пример не компилируется:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <set> //Чтобы использовать set необходимо подключить заголовочный файл <set>
#include <iostream.h>
using namespace std;
int main(void)
{ 
    std::set<int> s;   //Создаем переменную типа set
    s.insert(10); //Добавляем 10
    s.insert(20); //Добавляем 20 
    s.insert(10); //Пытаемся добавить 10, но в set не может содержаться
              //несколько одинаковых объектов, поэтому объект не добавляется
    //В данный момент s.size() == 2
    return 0;
}
Ругается:
Error: main.cpp(6,18):Too few arguments in template class name 'set'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2012, 15:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C++ и класс set, требуется релизовать (C++):

класс SET - C++
Разработать шаблонный класс Set. Класс должен содержать конструктор по умолчанию, основной конструктор и конструктор копирования....

класс set. код - C++
где можно увидеть как построен шаблонный класс &lt;set&gt; : заголовок, интерфейс и его реализацию?

Перегрузка функций (Создать класс Set ) - C++
Создать класс Set – множество целых чисел, используя динамическую память. Определить операторы работы с множествами: &quot;+&quot; – объединение, &quot;*&quot;...

матрицы диструктор с динамической памятью, методы get и set, перегрузки ввода/вывода, обстрактный класс - вир - C++
Нужно написать любую программу в которой используются: матрицы диструктор с динамической памятью, методы get и set, перегрузки...

Объясните, зачем класс мог бы предусматривать для элемента данных set-функцию и get-функцию - C++
Объясните, зачем класс мог бы предусматривать для элемента данных set-функцию и get-функцию.

Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы - C++
Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get (…), show (…). Определить другие методы Abiturient:...

18
CyBOSSeR
Эксперт С++
2305 / 1675 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
09.12.2012, 15:10 #2
Не может быть, все должно компилироватся, пруф.
1
K12
5 / 5 / 1
Регистрация: 22.08.2010
Сообщений: 99
09.12.2012, 17:56  [ТС] #3
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Не может быть, все должно компилироватся, пруф.
А разве этот codepad проверяет корректность кода? Я думал он только синтаксис проверяет. тем не менее, может Вы сможете помочь мне?

Добавлено через 2 часа 38 минут
Спасибо за внимание, в С++ Builder 6 всё отлично откимпилилось, а в старой версии не хотел.
0
K12
5 / 5 / 1
Регистрация: 22.08.2010
Сообщений: 99
10.12.2012, 19:38  [ТС] #4
Кто подскажет, как этот в класс SET поместить 3 типа данных? Ну вот в примере выше - я так понял в этом классе содержится целое число.
Мне нужно "засунуть" туда целое число, и два текстовых (наверное char или string).
Очень нужно, помогите пожалуйста!
0
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
10.12.2012, 19:51 #5
Цитата Сообщение от K12 Посмотреть сообщение
"засунуть" туда целое число, и два текстовых
То есть
Цитата Сообщение от K12 Посмотреть сообщение
номер поезда, станция назначения, время отправления?
Создайте структуру или класс с такими полями. А потом вместо set<int> - set<имя_класса>.
1
Croessmah
Ушел
Эксперт CЭксперт С++
13558 / 7708 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
11.12.2012, 09:45 #6
Цитата Сообщение от K12 Посмотреть сообщение
А разве этот codepad проверяет корректность кода?
Если что, то это компилятор...
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
11.12.2012, 10:58 #7
Schizorb, И перегрузку оператора < не забыть или функтор указать.
2
K12
5 / 5 / 1
Регистрация: 22.08.2010
Сообщений: 99
11.12.2012, 19:05  [ТС] #8
Итак, хочу поделиться новостями:
Сделал так, как посоветовал уважаемый Schizorb, получился такой текст.
Пробую добавить запись в эту структуру - не дает. Я уверен, что делаю неверно, но никак разобраться не могу, подскажите, пожалуйста, как это сделать?
Вопросы сформулирую кратко:
1) Точно ли это получился класс SET?
2) Как добавить в него запись?
Огромное спасибо за помощь Вам, уважаемые программисты!

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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <set>
#include <conio.h> 
#pragma hdrstop
#include <string.h>
//---------------------------------------------------------------------------
#pragma argsused
 
using namespace std;
 
struct poezd
{
int pnumber;       // номер поезда
char pstation[40]; // станция назначения
char time[5];      // время прибытия
};
 
int main(void)
{ 
    std::set<poezd> pset;   //Создаем переменную типа set
 
    pset.insert(1, "Station", "time"); //Пробуем добавить запись
}
Кстати, всё делаю я на Borland C++ Builder 6
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
11.12.2012, 19:14 #9
K12, Эм. А конструктор? ну если нет конструктора тогда создать объект poezd заполнить его и сделать insert. Ну и оператор < перегрузить не забудьте все же.
1
MrGluck
Модератор
Эксперт CЭксперт С++
7498 / 4614 / 694
Регистрация: 29.11.2010
Сообщений: 12,634
11.12.2012, 19:28 #10
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
#include <iostream>
#include <set>
#include <string>
 
 
class Train
{
    public:
        Train() {}
        Train (int number, std::string station, std::string time) :
            _number(number), _station(station), _time(time) {}
        friend bool operator < (const Train &t1, const Train &t2)
        {
            return t1._number < t2._number;
        }
    private:
        int _number;          // номер поезда
        std::string _station; // станция назначения
        std::string _time;    // время прибытия
};
 
int main()
{
    std::set<Train> pset;   //Создаем переменную типа set
    // pset.insert({1, "Station", "time"}); //Пробуем добавить запись
    pset.insert(Train (1, "Station", "time")); //Пробуем добавить запись
}
1
K12
5 / 5 / 1
Регистрация: 22.08.2010
Сообщений: 99
11.12.2012, 19:30  [ТС] #11
Цитата Сообщение от ForEveR Посмотреть сообщение
K12, Эм. А конструктор? ну если нет конструктора тогда
Извините за ламерский вопрос, но если можно без конструктора, тогда зачем он вообще?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
11.12.2012, 19:31 #12
MrGluck, Посоветовал бы не юзать имена, начинающиеся с подчеркивания... Передавать стринги через const ссылку (если мы не о С++11 говорим), ну и оператор < сделал бы не френдом (но это уже субъективно, хотя, если есть возможность, то не стоит вводить зависимости лишние).
1
MrGluck
Модератор
Эксперт CЭксперт С++
7498 / 4614 / 694
Регистрация: 29.11.2010
Сообщений: 12,634
11.12.2012, 19:32 #13
Цитата Сообщение от K12 Посмотреть сообщение
Извините за ламерский вопрос, но если можно без конструктора, тогда зачем он вообще?
Вам без конструктора нельзя. Как вы компилятору объясните, что
C++
1
(1, "Station", "time")
это объект Train?
1
K12
5 / 5 / 1
Регистрация: 22.08.2010
Сообщений: 99
11.12.2012, 19:36  [ТС] #14
Уважаемый MrGluck, откомпилировал, всё замечательно. Спасибо
0
MrGluck
Модератор
Эксперт CЭксперт С++
7498 / 4614 / 694
Регистрация: 29.11.2010
Сообщений: 12,634
11.12.2012, 19:39 #15
ForEveR, насчет конст ссылок для с++03 - согласен, а имена с подчеркиваниями - во многих гайдах по код стайлу написано таким образом обозначать поля класса, чтобы не было путаницы. И в некоторых исходниках видел подобную вещь.
Ну и с френд оператором - лень было get метод писать, пример скорее показательный)
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
#include <iostream>
#include <set>
#include <string>
 
 
class Train
{
    public:
        Train() {}
        Train (int number, const std::string &station, const std::string &time):
            _number(number), _station(station), _time(time) {}
        int getNumber() const
        {
            return _number;
        }
    private:
        int _number;          // номер поезда
        std::string _station; // станция назначения
        std::string _time;    // время прибытия
};
 
bool operator < (const Train &t1, const Train &t2)
{
    return t1.getNumber() < t2.getNumber();
}
 
int main()
{
    std::set<Train> pset;   //Создаем переменную типа set
    // pset.insert({1, "Station", "time"}); //Пробуем добавить запись
    pset.insert(Train (1, "Station", "time")); //Пробуем добавить запись
}
0
11.12.2012, 19:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2012, 19:39
Привет! Вот еще темы с ответами:

Требуется разработать класс - C++
Помогите! Разработать класс для представления понятия &quot;Канцелярский предмет&quot;. Примем, что состояние объектов этого класса определяется...

не удается релизовать свою функцию sort для шаблонного массива - C++
функция должна получать Array&lt;T&gt;::Iterator #ifndef SORT_H #define SORT_H #include &lt;iostream&gt; //#include &lt;string&gt; ...

Требуется добавить шаблон в класс - C++
Подскажите пожалуйста, как добавить шаблон в классе. Зачем нужен перегруженный оператор operator и какие данные вносить в него ...

Позиция элемента в контейнере STL кон. SET, поиск контейнер set словарь позиция - C++
Есть код №1. Он выводить на экран позицию нужного мне слова (только если в середине 1 слово а не 2 и больше например только &quot;privet&quot;. А...


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

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

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