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

Создать шаблон класса Set (множество)

19.05.2015, 19:20. Показов 16762. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно реализовать:

Класс •множество set. Дополнительно перегрузить следующие
операции:
+ •добавить элемент в множество (типа item + set);
+ •объединение множеств;
== •проверка множеств на равенство.


Я тут написал код, но ошибок походу много, незнаю как исправить. Помогите пожалуйста)

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
// lab4.cpp: определяет точку входа для консольного приложения.
//
 
/*Класс •множество set. Дополнительно перегрузить следующие
операции:
+ •добавить элемент в множество (типа item + set);
+ •объединение множеств;
== •проверка множеств на равенство.
*/
 
#include "stdafx.h"
#include <set>
#include <iostream>
#include <cstdlib>
#include <string>
#include <locale>
 
using namespace std;
 
template <class Type>
class Set{
private:
    Type item;
    set <Type> cs; //множество
    set <Type>::iterator ik; // итератор элементов множества
public:
    Set(){
        cout << ("введите множество. ввод окончить точкой") << endl;
        cin >> item;
        while (item != '.')
        {
            cs.insert(item);
            cin >> item;
        }
    };
 
    ~Set(){
        
    };
 
    Set operator + (Set cs2){};
 
    Set operator == (Set cs2){};
 
        void Print(){};
 
};
 
template <class Type>Type& Set<Type>::operator+{
    for (ik = cs2.cs.begin(); ik != cs2.cs.end(); ++ik)
        cs.insert(*ik);
    return *this;
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Rus");
    Set <char> q;
    q.Print();
    system("pause");
 
 
    Set <char> second;
    second.Print();
    q = q + second;
    q.Print();
    system("pause");
 
    //if (q == second) cout << "True" << endl;
    //else cout << "False" << endl;
 
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.05.2015, 19:20
Ответы с готовыми решениями:

Шаблон класса set (множество)
Требуется создать шаблон класса множество... а я без божно туплю, у самого не получилось... нашел на вашем форуме следующий код... исправил...

Шаблон класса set
Подскажите, пожалуйста, почему код не компилируется. Ругается на 8-ю строчку #pragma once #include &lt;iostream&gt; #include...

Реализовать шаблон класса set, который имитировал бы работу с множествами
Здравствуйте! Кто-нибуть знает, как это делать? Если да подскажите пожалуйста! Реализовать шаблон класса set, который имитировал бы...

8
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 6
10.06.2015, 17:07  [ТС]
Вобщем получилось у меня это сделать. Если кому надо то вот рабочий код

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
89
90
91
92
93
94
95
96
97
98
#include "stdafx.h"
#include <set>
#include <iostream>
#include <cstdlib>
#include <string>
 
 
using namespace std;
 
template <class T>
class Set
{
public:
    T ch;
    set <T> cs;
    
 
    Set(int n)
    {
        T temp;
        cout << "How much?";
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            cin >> temp;
            cs.insert(temp);
        }
    }
 
    template <class T>Set operator + (Set <T> cs2)
    {
        set <T>::iterator ik;
        for (ik = cs2.cs.begin(); ik != cs2.cs.end(); ++ik)
            cs.insert(*ik);
        return *this;
    }
 
    template <class T>Set operator + (T ins)
    {
        cs.insert(ins);
        return *this;
    }
 
    template <class T>bool operator == (Set <T> eq)
    {
        for each(T i in cs)
        {
            for each(T j in eq.cs)
            {
                if (i == j) return true;
                else return false;
            }
        }
        
    }
 
    void Print()
    {
        set <T>::iterator ik;
        for (ik = cs.begin(); ik != cs.end(); ++ik)
            cout << *ik << "  ";
        cout << endl;
    }
 
    ~Set()
    {
        cs.clear();
    }
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    Set<char>q(1);
    q.Print();
    system("pause");
 
 
    Set<char> second(1);
    second.Print();
    q = q + second;
    q.Print();
    system("pause");
 
    Set<char> set3(1);
    set3.Print();
    system("pause");
 
    Set<char> another(1);
    another = q + another;
    another.Print();
    system("pause");
 
    
    if (q == set3) cout << "True" << endl; else cout << "False" << endl;
 
    system("pause");
    return 0;
}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
10.06.2015, 17:34
Цитата Сообщение от MCORE Посмотреть сообщение
C++
46
for each(T i in cs)
Что-то здесь не чисто.
0
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 6
14.06.2015, 11:25  [ТС]
конкретнее что?) программа работает без ошибок
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
14.06.2015, 11:32
Цитата Сообщение от MCORE Посмотреть сообщение
конкретнее что?) программа работает без ошибок
В нормальном С++ нет таких конструкций.

Добавлено через 4 минуты
Странно что компиляция вообще до этого места доходит. В 30-й строке должна быть ошибка из-за одинакового имени шаблона класса и оператора.
0
0 / 0 / 0
Регистрация: 19.05.2015
Сообщений: 6
15.06.2015, 13:15  [ТС]
у оператора там нет никакого имени, это перегрузка операции объединения двух множеств
0
0 / 0 / 1
Регистрация: 16.06.2015
Сообщений: 14
16.06.2015, 11:04
Помню программу, есть у меня. могу поделиться.
0
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 1
23.12.2015, 22:54
Glushakov_ivan, Могли бы поделиться???
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
24.12.2015, 05:02
Цитата Сообщение от MCORE Посмотреть сообщение
программа работает без ошибок
C++
1
2
3
4
5
6
7
8
9
10
11
template <class T>bool operator == (Set <T> eq)
    {
        for each(T i in cs)
        {
            for each(T j in eq.cs)
            {
                if (i == j) return true;
                else return false;
            }
        }
    }
warning C4715: 'Set<char>::operator==<char>': not all control paths return a value
Добавлено через 7 минут
for each, in
This non-standard keyword is available in both C++/CLI and native C++ projects. However, its use is not recommended.

C++
1
2
3
4
5
template <class Type>
class Set{
private:
    Type item;
    set <Type> cs; //множество


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

C++
1
2
template<class Trololo>
    using Set = std::set<Trololo>;
всего две строчки, и вуууаляяя! я сделал сет!
можно сразу в продакшэн
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2015, 05:02
Помогаю со студенческими работами здесь

Создать класс Set (множество)
Сделал все что мог нужно помочь сделать выделение памяти под элементи динамически и перегрузки попытаюсь доделать сам // Lab_7.cpp:...

На базе контейнера vector из стандартной библиотеки С++ создайте шаблон класса Set,
На базе контейнера vector из стандартной библиотеки С++ создайте шаблон класса Set, в котором каждый объект может храниться только в одной...

Описать шаблон класса «множество», позволяющий выполнять основные операции – добавление и удаление элемента, п
Описать шаблон класса «множество», позволяющий выполнять основные операции – добавление и удаление элемента, пересечение, объединение и...

Описать шаблон класса «множество», позволяющий выполнять основные операции – добавление и удаление элемента, пересечение
Описать шаблон класса «множество», позволяющий выполнять основные операции – добавление и удаление элемента, пересечение, объединение и...

Создать шаблон класса
Общая постановка. Дано: число N и последовательность a1, a2, … aN Создать шаблон класса, порождающего динамические одномерные массивы с...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru