Форум программистов, компьютерный форум CyberForum.ru

Определение хэш-функции для контейнера - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Есть ли смысл в изучении C++ http://www.cyberforum.ru/cpp-beginners/thread1760119.html
Есть ли смысл учить C++ без знаний С ? Все равно ведь придется учить С даже если ты вдоль изучишь С++ если ты новичок в этом деле. Объясните пожалуйста в чем разница и что изменится в случае если ты изучишь в первую очередь С++ нежели Си.
C++ Исправить код, взаимодействующий с игрой Counter-Strike Здравствуйте, не могу понять что я не так делаю, вылазят ошибки не объявлен идентификатор С2065 посмотрите пожалуйста код приложу ниже. #include "stdafx.h" #include "include.h" using namespace std; Utils utils; http://www.cyberforum.ru/cpp-beginners/thread1760106.html
"Нарушение прав доступа при чтении по адресу 0x00000000" C++
код: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <math.h> int strtoint(char *s) { int temp = 0; int i = 0; int sign = 0; if (s == '-') /*на этой строчке вылетает*/ {
C++ Подключить библиотеку odeint к Xcode
Здравствуйте, я новичок в Xcode (и вообще в программирований на С++). Подскажите пожалуйста, как подключить библиотеку odeint (http://headmyshoulder.github.io/odeint-v2/) к (консольному) проекту в Xcode ?
C++ Заполнить двумерный массив размером 5 на 5 по спирали http://www.cyberforum.ru/cpp-beginners/thread1760093.html
Заполнить двумерный массив таким образом 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
C++ Заполнить матрицу по спирали значениями, полученными от пользователя Создать двухмерный массив по спирали любого размера введённым пользователем с клавиатуры подробнее

Показать сообщение отдельно
Nosey
1344 / 395 / 107
Регистрация: 22.10.2014
Сообщений: 860
Завершенные тесты: 2
11.06.2016, 17:21     Определение хэш-функции для контейнера
Цитата Сообщение от Cend Посмотреть сообщение
Т.е. как делать правильную хэш функцию для своего типа в общем случае не известно и нигде не определено?
Именно так, но не заморачивайтесь о хэш функциях, пока оно не потребуется, а если потребуется и будет возможность заморочиться, то проанализируете ваши ключи и попробуете скорректировать равномерность распределения ключей определенной хэш функцией. Но это настощий ад, для неискушенного математика

Цитата Сообщение от Cend Посмотреть сообщение
И сразу еще вопрос, может я что-то не так делаю, мне нужен контейнер
std::unordered_map<uint64_t[4], std::string>
как его вообще правильно реализовать?
С массив и std::array - это разные типы. Т.е.:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace std
{
    template<typename T, size_t N>
    struct hash<T[N]>
    {
        using argument_type = T[N];
        using result_type = size_t;
 
        result_type operator()(const argument_type& a) const
        {
            hash<T> hasher;
            result_type h = 0;
            for (result_type i = 0; i < N; ++i)
            {
                h = h * 31 + hasher(a[i]);
            }
            return h;
        }
    };
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru