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

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

Войти
Регистрация
Восстановить пароль
 
sladkaja27
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 13
#1

Перегрузка опреатора на С++ - C++

23.01.2011, 19:40. Просмотров 359. Ответов 3
Метки нет (Все метки)

Описать класс множество целых чисел. Перегрузить следующую операцию: != проверка множеств на неравенство.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2011, 19:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка опреатора на С++ (C++):

Ошибка при вызове опреатора () в BCpp - C++
В проекте есть класс OSY #ifndef OSY_H #define OSY_H #include <Classes.hpp> class osy { public: ...

Перегрузка в виде метода VS Перегрузка в виде функции друг - C++
Привет! Собственно сабж: В каких случаях используется перегрузка в виде метода, а когда в виде функции друг? Добавлено через 4...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

перегрузка - C#
помогите сделать перегрузку пожалуйста... static public void Method2() { const byte m = 5, n = 7; ...

Перегрузка - C++
даны две перегрузки: 1. постфиксная для ++ чтобы прибавить 1 к height и к width Rectang & operator ++(int) {height++; width++; ...

Перегрузка в c++ - C++
Собственно для чего нужна перегрузка функций или операторов ?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
23.01.2011, 20:46 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class SetOfIntegers: public vector<int>
{
public:
    SetOfIntegers():vector(){}
    SetOfIntegers(size_type count):vector(count){};
    bool operator !=(SetOfIntegers x)
    {
        for (int i=0; i<size(); i++)
        {
            if (x[i]!=this->at(i))
            { 
                return true;
            }
        }
        return false;
    }
};
lemegeton
2923 / 1352 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
24.01.2011, 09:15 #3
almazsr, это не множество, это просто вектор (массив).
Множество двубайтных целых.
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
#include <cstdio>
#include <cstddef>
 
class Set {
 public:
  typedef short int DataType;
  typedef unsigned short int UDataType;
  Set()
    : size_((1 << (sizeof(DataType) * 8)) / 8),
      data_(new char[size_]) {
    for (size_t i = 0; i < size_; ++i)
      data_[i] = 0;
  }
  Set(const Set& other)
    : size_((1 << (sizeof(DataType) * 8)) / 8),
      data_(new char[size_]) {
    for (size_t i = 0; i < size_; ++i)
      data_[i] = other.data_[i];
  }
  ~Set() { delete [] data_; }
  size_t size() const { return size_; }
  void Add(const DataType value) {
    UDataType a_value = value;
    data_[a_value / (sizeof(*data_) * 8)] |= 1 << (a_value % (sizeof(*data_) * 8));
  }
  void Remove(const DataType value) {
    UDataType a_value = value;
    data_[a_value / (sizeof(*data_) * 8)] &= ~(1 << (a_value % (sizeof(*data_) * 8)));
  }
  bool Has(const DataType value) {
    UDataType a_value = value;
    return (data_[a_value / (sizeof(*data_) * 8)] &= 1 << (a_value % (sizeof(*data_) * 8))) != 0;
  }
  int Compare(const Set& other) const {
    for (size_t i = 0; i < size_; ++i)
      if (data_[i] != other.data_[i])
        return data_[i] - other.data_[i];
    return 0;
  }
  Set& operator+=(const DataType value) {
    Add(value);
    return *this;
  }
  Set& operator-=(const DataType value) {
    Remove(value);
    return *this;
  }
  bool operator!=(const Set &other) {
    return Compare(other) != 0;
  }
  Set& operator=(const Set& other) {
    if (this != &other) {
      for (size_t i = 0; i < size_; ++i)
        data_[i] = other.data_[i];
    }
    return *this;
  }
 private:
  size_t size_;
  char *data_;
};
 
int main(int argc, char *argv[]) {
  Set a, b;
  a += -1;
  b += -1;
  printf("a != b is %s.\n", (a != b)?"true":"false");
  a.Remove(-1);
  printf("a != b is %s.\n", (a != b)?"true":"false");
  return 0;
}
sladkaja27
0 / 0 / 0
Регистрация: 28.11.2010
Сообщений: 13
24.01.2011, 17:47  [ТС] #4
lemegeton,а можешь написать пояснения к этому решению??
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2011, 17:47
Привет! Вот еще темы с ответами:

перегрузка в с++ - C++
Помогите нужно очень срочно!недавно писал о перегрузке есть перегрузка постфиксного инкремента Rectang &amp; operator ++(int) ...

Перегрузка - C#
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication17 { ...

Перегрузка ЦП - Удаление вирусов
Здравствуйте.Недавно заметил вирус загружающий ЦП на 100%.Пока он есть в процессах - все жутко тормозит.Имя вируса x30811.exe , кроме него...

Перегрузка - C++
ребята помогите сделать тут перегрузку очень нужно :) #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt;...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.01.2011, 17:47
Ответ Создать тему
Опции темы

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