c ++ unordered_set .find方法无法编译,显示“表达式必须具有类类型”错误

时间:2018-08-31 02:30:25

标签: c++ visual-studio compiler-errors find unordered-set

因此,我正在尝试编写一个函数,该函数可以确定一个集合中有多少个字符串是该集合中其他字符串的拼写形式。为了快速执行此操作,我选择对字符串进行排序,然后将其移至“ 问题”,是当我尝试对unordered_sets使用find方法时,出现编译时错误,提示我“表达式必须具有类类型”。

我浏览了整个网站,但没有看到任何带有该错误的帖子,我认为这是同一个问题。

我在Visual Studio中用C ++工作,我应该指出代码还没有完成;在出现错误的那行之后,我没有写任何东西。另外,特别是std :: unordered_set“有效”的名称以红色下划线。

还值得注意的是,这段代码仍在开发中,因此我实际上并不需要写下一些东西。例如,我可能最终不会使用那么长的时间(因为我已经意识到,尝试使用单个巨大的字符数组而不是字符串可能比付出的努力还要多。)

这是我正在使用的方法:

编辑:由于涉及此方法的敏感性,我删除了该方法的一些不相关部分。我为缺乏远见深表歉意。

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 ++指南完全相同:

The c++ reference page I was looking at

我认为这就是我所需要的全部代码,但是经验告诉我,编程问题通常会在我认为不相关的部分代码中引起原因。因此,我将其余的代码发布到了下面。

编辑:其余代码原来无关紧要,因此为了清楚起见,我将其删除。

1 个答案:

答案 0 :(得分:1)

这似乎不正确:

std::unordered_set<std::string> valid();
std::unordered_set<std::string> invalid();

您要声明两个返回集合的函数,而不是两个集合。

您不是真的想要

std::unordered_set<std::string> valid;
std::unordered_set<std::string> invalid;