Mfc -> Stl

Тема в разделе "MS Visual C++", создана пользователем Antonim, 6 июн 2012.

  1. Antonim

    Antonim Member

    Регистрация:
    15 дек 2010
    Сообщения:
    15
    Симпатии:
    0
    Доброго времени суток!
    Сразу скажу что излазил инет, msdn и rsdn...
    Собственно прошу помощи... :)
    Код в MFC:
    // в main.cpp
    //...
    Код (C++):
    ...
    myClass s1;
    //инициализация объекта s1

    myClass s2;
    //s2 не инициализировался...

    mConn.InitHashTable(257);

    if (0 == mConn.Lookup(s1.Local, s2))
    {
    mConn.SetAt(s1.Local, s1);
    ///....
    }
    //mConn объявлен как:
    Код (C++):
    CMap<DWORD, DWORD, myClass, myClass&> mConn;
    //myClass объявлен как:
    Код (C++):
    class myClass
    {
    public:
    myClass(); 
    virtual ~myClass();
    DWORD GetMessEx (DWORD dwIndex);
    DWORD GetMess   (DWORD dwIndex);
    DWORD Local;
    };
    Вопрос главный - как из CMap перетащить в std::map?
    И как реализовать в STL сравнение Lookup и вставку SetAt?


    Начал было пробовать реализовывать в STL

    Код (C++):
    std::map<DWORD,myClass> mConn;
    if (mConn.find(s1.Local) == 0)
    ... и тут же остановился ... мне нужно сравнение, делать два асс.контейнера теперь что ли?! :huh: ... вообщем, башка пухнет, подскажите пожалуйста...

    Заранее благодарю.
    P.S: работаю в MVC++ 6.0 ... если это что-то меняет))
     
  2. a0z

    a0z Well-Known Member

    Регистрация:
    15 мар 2011
    Сообщения:
    109
    Симпатии:
    0
    if(mConn.find(s1.Local) == mConn.end()) - нет в мапке

    про SetAt не понятно. Это ж мапка, элементы не упорядочены. Возможно где-то есть что-то типа ordered_hashtable или как-то так. Надо искать.

    остальные вопросы не понятны.
     
  3. Antonim

    Antonim Member

    Регистрация:
    15 дек 2010
    Сообщения:
    15
    Симпатии:
    0
    Поясню.
    1) Lookup() ищет значение по ключу. но значение-то класс! Не понимаю как это реализовать с помощью STL.
    2) SetAt() вставляет элемент в мапу. ... тут вроде бы разобрался, но если есть возможность, киньте пару-тройку строк(рабочих), для уверенности.

    а это я не понял)) То есть "нет в мапе"?

    P.S.: По аналогии не получается сделать, наверное потому что, не умею делать того чего не знаю/недопонимаю...

    Добавлено:
    вылетает ерорчик, при нажатии "отправить"...
     
  4. a0z

    a0z Well-Known Member

    Регистрация:
    15 мар 2011
    Сообщения:
    109
    Симпатии:
    0
    1 - запамятовал за давностью лет. Кажется нужно у класса-ключа перегрузить operator< и operator== тогда мапка будет знать, порядок элементов и сможет вставить элемент куда надо. Но у вас вроде ж ключом является DWORD? Тогда никаких доп телодвижений не надо.

    2 - нет под рукой. Давно уже не писал на C++...

    "нет в мапе" - т.е. элемента с запрошенным ключом (ключ - s1.Local) нет в контейнере. Либо я не правильно понял код
    if (mConn.find(s1.Local) == 0)
    я так думал, тут проверяется, есть ли элемент с ключом s1.Local в mConn
     
  5. Antonim

    Antonim Member

    Регистрация:
    15 дек 2010
    Сообщения:
    15
    Симпатии:
    0
    1 - ага, понял теперь, буду пробовать.
    ... и последнее. да, именно, проверялось наличие s1.Local в mConn. все верно.
    Спасибо за оТвет!
     
Загрузка...
Похожие Темы - Mfc Stl
  1. PetrovVA
    Ответов:
    3
    Просмотров:
    1.720
  2. harimambura
    Ответов:
    0
    Просмотров:
    1.302
  3. Antonim
    Ответов:
    1
    Просмотров:
    1.237
  4. ezus
    Ответов:
    4
    Просмотров:
    4.688
  5. borpavlenko
    Ответов:
    6
    Просмотров:
    5.306

Поделиться этой страницей