powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятки с set
3 сообщений из 3, страница 1 из 1
Непонятки с set
    #33677077
tors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
struct TInfoEx
{
TInfo Info;
String Name;
};

set<TInfoEx> InfoEx;

TInfoEx inf;
.
.
.
InfoEx.insert(inf);

operator< not implemented in type TInfoEx for arguments of the same type

вероятно нужно реализовать operator< для этой структуры и вложенных в нее структур?
как это сделать - пример плиз
...
Рейтинг: 0 / 0
Непонятки с set
    #33677184
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tors
вероятно нужно реализовать operator< для этой структуры и вложенных в нее структур?как это сделать - пример плиз

Ну например так:

Код: plaintext
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.
#include <set>
#include <string>

using namespace std;

struct TInfo
{
    // bla-bla-bla (смотрите сами что у вас тут за структура и докрутите соотв. оператор)
    int m;
};

bool operator <(const TInfo& lhs, const TInfo& rhs)
{
    return (lhs.m < rhs.m);
}

struct TInfoEx
{
    TInfo info;
    string name;
};

// может быть в вашем случае логика оператора будет другой, тоже смотрите по ситуации
bool operator<(const TInfoEx& lhs, const TInfoEx& rhs)
{
    if(lhs.info < rhs.info) 
    {
        return true;
    }
    else if(rhs.info < lhs.info) 
    {
        return false;
    }
    else
    {
        return (lhs.name < rhs.name);
    }
}

int main()
{
    TInfo t1, t2;
    t1.m =  1 ;
    t2.m =  2 ;

    TInfoEx T1, T2;
    T1.info = t1;
    T2.info = t2;
    T1.name = "B";
    T2.name = "A";

    // -----------  несколько тестов для успокоения души
    cout << "t1 < t2 = " << (t1 < t2) << endl;
    cout << "t2 < t1 = " << (t2 < t1) << endl;
    cout << "T1 < T2 = " << (T1 < T2) << endl;
    cout << "T2 < T1 = " << (T2 < T1) << endl;
   // ----------- 

    // ну и требуемое множество. должно компилиться и работать
    set<TInfoEx> s;
    s.insert(T1);
    s.insert(T2);

    return  0 ;

}


...
Рейтинг: 0 / 0
Непонятки с set
    #33677538
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
torsвероятно нужно реализовать operator< для этой структуры и вложенных в нее структур?

Да, но только для этой, без вложенных. Как сделать - в любом учебнике.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятки с set
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]