Создание неупорядоченной карты с кортежами as keys

В вышеприведенной программе пробелы между элементами массива в tabuleiro.txt не читаются. Пробел только для чтения при чтении первой строки в

fscanf(fp,"%d %d",&lines,&columns);

Изменение вложенных циклов for с дополнительным объявлением перед следующим:

    char whitespace;
    for(i=1;i<=lines;i++){
        for(j=1;j<=columns;j++){
            fscanf(fp, "%c", &matrix[i][j]);
            fscanf(fp, "%c", &whitespace);
            printf("%c", matrix[i][j]);
            printf("%c", whitespace);
        }
    }

печатает требуемый результат


X . . X
. O . X
. . O .
22
задан dzhelil 31 August 2010 в 19:04
поделиться

3 ответа

Имейте Вас, пытался использовать это:

#include "boost/functional/hash.hpp"
#include <unordered_map>
#include <tuple>

usong Edge = std::tuple<double, double, double, double>;

struct KeyHash {
    std::size_t operator()(const Edge & key) const
    {
        return boost::hash_value(key);
    }
};

using EdgeMap = std::unordered_map<Edge, int, KeyHash>;

заметьте, что я использую std для tuple и unordered_map.

0
ответ дан 29 November 2019 в 05:35
поделиться

Все это есть в документации...

Вам нужно что-то вроде:

std::size_t hash_value(Edge const& e)
{
    std::size_t seed = 0;
    boost::hash_combine( seed, e.get<0>() );
    boost::hash_combine( seed, e.get<1>() );
    boost::hash_combine( seed, e.get<2>() );
    boost::hash_combine( seed, e.get<3>() );
    return seed;
}

... и затем вы можете определить:

boost::unordered_map< Edge, int, boost::hash< Edge > > EdgeMap;

... на самом деле это значение по умолчанию, так что теперь он должен работать без явного определения хеша:

boost::unordered_map< Edge, int > EdgeMap;
1
ответ дан 29 November 2019 в 05:35
поделиться

Документация Boost дает необходимый интерфейс. Не зная больше о задействованных ценностях, трудно сказать намного больше. Получив в качестве входных данных ключевой объект, он должен создать детерминированный size_t, т. е. это чистая функция, где результат зависит исключительно от входного значения, поэтому ввод одних и тех же входных данных всегда будет производить один и тот же хэш-код.

0
ответ дан 29 November 2019 в 05:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: