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

Перегрузка оператора сравнения (==) для массивов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
18.01.2013, 17:42     Перегрузка оператора сравнения (==) для массивов #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
class array
{
    double sum;
    int tmp;
public:
        array(int number);
        ~array();
        void print();
    array operator==(*arr& array2);
private:
        int *arr;
        int number;
};
 
array::array(int Number)      // Заполнение массива 
{
   if( Number > 0 ) 
   number = Number;
   else throw -1;
   arr = new int[number]; 
   for (int i=0; i<number; i++)
   cin >> arr[i];
}
Это я так пытался сравнить, но там впринципе всё не правильно наверное.
Я не знаю как выделить элементы для второго массива, чтобы их сравнить
C++
1
2
3
4
5
6
7
8
9
10
array array::operator==(array& array2)
{
    for (int i=0; i < number; i++)
        a=array.array(i);
        b=array2.array(i);
        if (a == b) return true
        else return false;
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2013, 17:42     Перегрузка оператора сравнения (==) для массивов
Посмотрите здесь:

C++ Перегрузка оператора сравнения
Перегрузка оператора сравнения и сортировка C++
C++ Сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения
Перегрузка оператора плюс, объединение двух массивов C++
C++ Перегрузка оператора = для указателей
C++ Перегрузка оператора сравнения для строк
Перегрузка оператора + (объединение одномерных массивов) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
18.01.2013, 17:49     Перегрузка оператора сравнения (==) для массивов #2
определение будет выглядеть как-то так
C++
1
bool operator==(const array *array2) const;
Добавлено через 51 секунду
или
C++
1
bool operator==(const array &array2) const;
если по ссылке
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5664 / 3143 / 356
Регистрация: 29.11.2010
Сообщений: 8,417
18.01.2013, 17:52     Перегрузка оператора сравнения (==) для массивов #3
я б для начала проверял размеры и лишь потом элементы.
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
18.01.2013, 17:52     Перегрузка оператора сравнения (==) для массивов #4
а функция должна сперва сравнить размеры массивов и вернуть false если они не равны,
а если размеры одинаковые, то в цикле сравнить поэлементно и если встретятся разные элементы,
тут же return false;
а если уж цикл сам по себе завершится, тогда return true;
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
18.01.2013, 17:54  [ТС]     Перегрузка оператора сравнения (==) для массивов #5
UserAK, а как теперь само определение написать?
Интересует конкретно сравнение поэлементно
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
18.01.2013, 18:01     Перегрузка оператора сравнения (==) для массивов #6
C++
1
2
3
4
5
6
7
8
bool array::operator==(const array &array2) const
{
    if( number != array2.number ) return false;
    for (int i=0; i < number; i++){
        if ( arr[i] != array2.arr[i] ) return false;
    }
    return true;
}
skiff.
6 / 6 / 2
Регистрация: 10.09.2011
Сообщений: 87
18.01.2013, 18:14  [ТС]     Перегрузка оператора сравнения (==) для массивов #7
UserAK, всё работает! спасибо большое!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2013, 18:16     Перегрузка оператора сравнения (==) для массивов
Еще ссылки по теме:

C++ Перегрузка оператора сравнения
C++ Перегрузка оператора сравнения
C++ Перегрузка оператора сравнения для указателя на объект
C++ Перегрузка оператора сравнения (сравнивать только по одному полю)
C++ Перегрузка оператора сложения. (Сложение массивов)

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

Или воспользуйтесь поиском по форуму:
UserAK
70 / 70 / 4
Регистрация: 25.12.2012
Сообщений: 189
Записей в блоге: 2
18.01.2013, 18:16     Перегрузка оператора сравнения (==) для массивов #8
да ещё чуть не забыл
C++
1
if( &array2 == this ) return true; // если сравнивается сам с собой
Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
bool array::operator==(const array &array2) const
{
    if( &array2 == this ) return true; // если сравнивается сам с собой
    if( number != array2.number ) return false;
    for (int i=0; i < number; i++){
        if ( arr[i] != array2.arr[i] ) return false;
    }
    return true;
}
Yandex
Объявления
18.01.2013, 18:16     Перегрузка оператора сравнения (==) для массивов
Ответ Создать тему
Опции темы

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