Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我的程序返回两个文本文件(每个文件包含479k个单词)的set_交集值的速度非常慢。这是我的密码吗?_C++_Visual Studio_Sorting_Boost_Set Intersection - Fatal编程技术网

C++ 我的程序返回两个文本文件(每个文件包含479k个单词)的set_交集值的速度非常慢。这是我的密码吗?

C++ 我的程序返回两个文本文件(每个文件包含479k个单词)的set_交集值的速度非常慢。这是我的密码吗?,c++,visual-studio,sorting,boost,set-intersection,C++,Visual Studio,Sorting,Boost,Set Intersection,我编写了一个程序来比较两个包含字典中所有单词的文本文件(一个向前,一个向后)。其思想是,当将包含所有向后单词的文本文件与向前单词进行比较时,任何匹配都将表明这些单词可以向前和向后拼写,并将返回所有回文以及向后和向前拼写单词的任何单词 这个程序可以运行,我已经在三种不同的文件大小上对它进行了测试。第一组仅包含两个单词,仅用于测试目的。第二个包含10000个英语单词(在每个文本文件中),第三个包含所有英语单词(约479k个单词)。当我运行程序调用第一组文本文件时,结果几乎是瞬间的。当我运行程序调用包

我编写了一个程序来比较两个包含字典中所有单词的文本文件(一个向前,一个向后)。其思想是,当将包含所有向后单词的文本文件与向前单词进行比较时,任何匹配都将表明这些单词可以向前和向后拼写,并将返回所有回文以及向后和向前拼写单词的任何单词

这个程序可以运行,我已经在三种不同的文件大小上对它进行了测试。第一组仅包含两个单词,仅用于测试目的。第二个包含10000个英语单词(在每个文本文件中),第三个包含所有英语单词(约479k个单词)。当我运行程序调用第一组文本文件时,结果几乎是瞬间的。当我运行程序调用包含10k单词的文本文件集时,需要几个小时。然而,当我运行包含最大文件(479k个单词)的程序时,它运行了一天,只返回了大约30个单词,而它本应返回数千个单词。它甚至没有完成,也远没有完成(这是在一台相当不错的游戏PC上)

我觉得这和我的代码有关。这肯定是低效的

我注意到两件事:


  • 当我运行时:
    cout停止使用名称空间。输入额外的内容

    让代码做一件事。你的代码没有做你声称它做的事情,可能是因为你一次做了4件事,并且感到困惑

    然后把代码粘在一起

    Getline支持任意分隔符。将其与
    ,“
    一起使用

    编写将文件转换为字符串向量的代码

    std::vector<std::string> getWords(std::string filename);
    
    完成了

    也可以用C++03循环停止它

    for(auto& elem:vec)
      std::cout<<elem<<'\n';
    
    for(自动和元素:vec)
    
    std::cout停止使用名称空间。输入额外的内容

    让代码做一件事。你的代码没有做你声称它做的事情,可能是因为你一次做了4件事,并且感到困惑

    然后把代码粘在一起

    Getline支持任意分隔符。将其与
    ,“
    一起使用

    编写将文件转换为字符串向量的代码

    std::vector<std::string> getWords(std::string filename);
    
    完成了

    也可以用C++03循环停止它

    for(auto& elem:vec)
      std::cout<<elem<<'\n';
    
    for(自动和元素:vec)
    
    std::cout您发布的代码与您所说的不符。文件格式是什么?为什么从
    file1
    读取的每一行都要使用
    getline()
    文件2中的每一行mean@JeremyFriesner那是个错误。谢谢你指出这一点。你发布的代码与你说的不一样。文件格式是什么?为什么从
    file1
    读取的每一行都要使用
    getline()
    文件2中的每一行mean@JeremyFriesner那是个错误。谢谢你指出这一点。嘿,谢谢!我试试这个。非常感谢。@maria9876您有任何更新吗?如果您的案件已经解决,请帮助标记答案。如果没有,请随时与我们联系。您的理解与合作将不胜感激。@Jeaninez MSFT您为什么在问答中发垃圾邮件?我的意思是,当然,是一个对勾,但老实说,这是一个一周前的问题,如果他们不想打对勾,那是他们的事。和“随时联系我们”?这有点奇怪。嘿,谢谢你!我试试这个。非常感谢。@maria9876您有任何更新吗?如果您的案件已经解决,请帮助标记答案。如果没有,请随时与我们联系。您的理解与合作将不胜感激。@Jeaninez MSFT您为什么在问答中发垃圾邮件?我的意思是,当然,是一个对勾,但老实说,这是一个一周前的问题,如果他们不想打对勾,那是他们的事。和“随时联系我们”?这有点奇怪。