The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"как сделать хэш map ?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"как сделать хэш map ?"
Сообщение от neomag Искать по авторуВ закладки on 14-Ноя-03, 14:16  (MSK)
---------------
#include <map>
#include <iostream>

class IP
{
  public:
  int a;
  int b;
  int c;
  int d;
};

int main() {

map <IP, int> ip_balance;

IP ip;

ip_balance[ip]++;

return 0;
}
-------------------------
(упрощенная вырезка)

не компилируется, говорит:

/usr/include/c++/3.2.2/bits/stl_function.h: In member function `bool
   std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = IP]':
/usr/include/c++/3.2.2/bits/stl_map.h:224:   instantiated from `_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = IP, _Tp = int, _Compare = std::less<IP>, _Alloc = std::allocator<std::pair<const IP, int> >]'
test.cpp:28:   instantiated from here
/usr/include/c++/3.2.2/bits/stl_function.h:197: no match for `const IP& < const
   IP&' operator
-----------------
понимаю, что вопрос ламерский -ногами не пинать.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "как сделать хэш map ?"
Сообщение от SergeiZz Искать по авторуВ закладки on 14-Ноя-03, 15:54  (MSK)
Первым должен идти тип ключа, а не тип значения, то есть не
>map <IP, int> ip_balance;
а
map<int, IP> ip_balance;

>понимаю, что вопрос ламерский -ногами не пинать.
Чай сам давно догадался...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "как сделать хэш map ?"
Сообщение от neomag Искать по авторуВ закладки on 14-Ноя-03, 16:34  (MSK)
>Первым должен идти тип ключа, а не тип значения, то есть не

>map<int, IP> ip_balance;
>

>Чай сам давно догадался...

ээ, так вот мне бы и хотелось иметь в качестчве ключа тип 'IP'
а значением кол-во байтов ушедших на этот ip.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "как сделать хэш map ?"
Сообщение от asso Искать по авторуВ закладки on 15-Ноя-03, 05:14  (MSK)
Ох...  STL хорошая штука, но если не прочитать сначала по нему книгу, потом книгу по С++, потом снова по STL, то не стоит пытаться его использовать.  Проверено на собственном опыте.

#include <map>
#include <iostream>

class IP
{
    friend bool operator < (const IP &ip1, const IP &ip2);

    public:
        int a;
        int b;
        int c;
        int d;

};

bool operator < (const IP &ip1, const IP &ip2)
{
    return ......;
}


int main(int argc, char *argv[])
{
    std::map<IP, int> ip_balance;

    IP ip;

    ip_balance[ip]++;

    return 0;
}


Обрати внимание на оператор "меньше", без него std::map работать не будет. Ну и не забывай про конструктор копирования.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру