Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятки с set / 3 сообщений из 3, страница 1 из 1
19.04.2006, 16:22
    #33677077
tors
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с set
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
19.04.2006, 16:56
    #33677184
redskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с set
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
19.04.2006, 18:45
    #33677538
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с set
torsвероятно нужно реализовать operator< для этой структуры и вложенных в нее структур?

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


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