Итак, я пытаюсь написать функцию, которая может определить, сколько строк в коллекции являются анаграммами других строк в этой коллекции. Чтобы сделать это быстро, я решил отсортировать строки, а затем переместить их в "
действительный "и" недействительный "хэш-набор, в зависимости от того, нашел ли я дубликат. Проблема в том, что когда я пытаюсь использовать метод find для unordered_sets, я получаю ошибку времени компиляции, которая говорит мне, что" выражение должно иметь тип класса ".
Я просмотрел веб-сайт, но я не увидел ни одной записи с такой ошибкой, которую я признал той же проблемой.
Я работаю в Visual Studio, в C ++, и я должен отметить, что код не закончен; Я ничего не написал после строки, которая дает мне ошибку. Кроме того, именно имя std :: unordered_set "valid" подчеркнуто красным.
Стоит также отметить, что этот код находится в стадии разработки, поэтому записано несколько вещей, которые мне могут не понадобиться; например, я, вероятно, не буду в конечном итоге использовать эти длинные long (потому что я понял, что попытка использовать один огромный массив символов, а не строки, вероятно, требует больше усилий, чем оно того стоит).
Вот метод, над которым я работаю:
Редактировать: Я удалил некоторые нерелевантные части этого метода из-за чувствительности его происхождения. Я прошу прощения за отсутствие предвидения.
int Anagram_Locator::filterAnagrams()
{
...
//the valid and invalid hash sets
std::unordered_set<std::string> valid();
std::unordered_set<std::string> invalid();
//pull in the words, and sort them. Then, send them to either the valid or invalid string hash sets
while (std::cin >> transferString)
{
...
//is it in the valid list?
std::unordered_set<std::string>::const_iterator found = valid.find (transferString);
}
}
Последняя строка в этом фрагменте кода - это та, которая не компилируется. Это особенно расстраивает меня, потому что написано именно так, как было в этом руководстве по c ++:
Ссылочная страница C ++, которую я просматривал
Я бы подумал, что это весь код, который мне понадобится, но опыт научил меня, что проблемы программирования часто имеют причины в частях кода, которые, я думаю, не имеют значения. Поэтому я разместил оставшуюся часть кода ниже.
Редактировать: остальная часть кода оказалась неактуальной, поэтому я удалил ее для ясности.