hashset — Как работает hash_set в C ++?

Я не знаю как пользоваться hash_set в C ++. Я невероятно новичок в этом языке, поэтому я не понимаю, как делать много вещей. Как мне использовать SGI hash_set расширение, так что компилятор, наконец, компилируется без ошибок? Вот мой заголовочный файл:

#ifndef _GAME1_H
#define _GAME1_H

#include "card.h"#include "deck.h"#include <ext/hash_set>

const unsigned int TRIALS = 10;

class Game1 {

private:
// Card::Value is defined in card.h as a public enum:
// enum Value { NullCard, Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King };
std::hash_set<Card::Value> *map; // does this really need to be a pointer?

public:
Game1();
bool isPair();
bool isFlush();
void returnToDeck();
};

#endif

Когда я пытаюсь скомпилировать, я получаю:

In file included from game1.cpp:9:
game1.h:13: error: using-declaration for non-member at class scope
game1.h:13: error: expected `;' before '<' token
make: *** [game1.o] Error 1
  1. Я не знаю, что означает «использование-объявление для не-члена в области видимости».
  2. Почему компилятор жалуется, что «ожидается»; » до ‘<«токен», когда я в основном следую тому же примеру, что и SGI имеет на своем сайте?
  3. Я использую GCC 3.4.6, поэтому я не могу использовать unordered_set
  4. Я смотрел на простой пример C ++ hash_set но я не понимаю, почему они используют hash<int> H; это актуально?

Я нахожусь в тупике, так как буквально не могу понять это после нескольких часов консультаций с Google.

0

Решение

Я считаю, что вы должны объявить map как

// answering your other question, most likely it doesn't have to be a pointer.
__gnu_cxx::hash_set<Card::Value> map;

(Согласно источник hash_set)

Также, map не является хорошим именем для переменной, так как это имя стандартного класса. Хотя это не должно быть причиной для ошибок компиляции здесь.

0

Другие решения


По вопросам рекламы [email protected]