Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
andrik740
0 / 0 / 1
Регистрация: 16.03.2016
Сообщений: 3
1

Как сравнивать структуры

01.04.2016, 23:03. Просмотров 4650. Ответов 2

Есть структура например

C++
1
2
3
4
5
6
7
8
9
10
struct TIME {                   
    int min;
    int sec;
};
 
TIME A={10,15},B;
 
B=A;   //можно сделать
 
if(A==B)    // Не работает
Как можно сравнить их, не сравнивая отдельно каждый элемент. Спасибо за ответы!)
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2016, 23:03
Ответы с готовыми решениями:

Как сравнивать char '\'?
Компиляция следуещего кода приводит к ошибке: if(field == field && field == '\') turnOn = true;...

как сравнивать даты?
Имеется текстовый файл, в нем список учебных дней когда есть математика, в формате...

Как сравнивать regex выражения?
std::vector <std::regex> lex; lex.push_back(std::regex("^()*"));...

Как сравнивать ключи из слов?
Сортирую ключи из слов. Не могу понять, что больше a или bc, например, подскажите,плиз, и извините...

Как в операторах if и switch сравнивать значения со словами?
Приветствую. Я еще новичек в C++, и у меня возникла проблемка. Мне не понятно, как в операторах if...

2
Shamsik
-42 / 17 / 15
Регистрация: 23.12.2013
Сообщений: 521
Записей в блоге: 1
Завершенные тесты: 2
02.04.2016, 02:01 2
C++
1
2
3
bool operator == (const TIME & timeB) const {
   return this->min == timeB.min && this->sec == timeB.sec;
}
Добавлено через 45 минут
//Напишу попроще без перегрузки

TIME A = {10,15},B;

Объявил нормально но неправильно сравнил

C++
1
2
3
4
5
6
7
8
    if (A.min == A.sec) 
    {
        cout << "Равна";
    }
    else 
    {
        cout << "НеРавна";
    }
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
5269 / 2645 / 725
Регистрация: 18.10.2014
Сообщений: 4,657
02.04.2016, 02:41 3
Цитата Сообщение от andrik740 Посмотреть сообщение
Как можно сравнить их, не сравнивая отдельно каждый элемент.
Как ни верти, а придется сравнивать отдельно каждый элемент. Компилятор С++ не генерирует неявных операторов сравнения для классов. Сравнение можно (нужно) завернуть в оператор (см. ответ Shamsik), но писать такой оператор все равно придется самому.

Можно отказаться от использования своего типа и перейти на std::pair

C++
1
    typedef std::pair<int, int> TIME;
(или на std::tuple). Тогда оператор сравнения вам будет предоставлен готовый. Но имена полей в TIME получатся не такие говорящие, как они были у вас: first and second в случае std::pair.

Выбирайте, что вам больше нравится.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2016, 02:41

Как сравнивать элементы одного масива с элементами другого?
Здраствуйте, хеелппп. Даны два массива : А и B. Необходимо создать третий массив, в котором нужно...

Как идти по строке с конца к середине и сравнивать буквы
#include &lt;iostream&gt; using namespace std; int main(){ string str1; string str2; ...

Можно ли сравнивать строковые литералы? как правильно это сделать?
надо сравнить введенный строковый литерал с одним из доступных. int main() { setlocale(0,&quot;&quot;); ...


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

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

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