C++ 搜索性能

2023-12-12

我有两个文本文件。其中包含大约 70,000 个姓名的列表 (~1.5MB)。另一个包含将从各种来源获得的文本。也就是说,每次执行程序时,该文件的内容都会发生变化(~0.5MB)。本质上,我希望能够将一些文本粘贴到文本文件中,并查看在我的列表中找到了哪些名称。有点像查找功能 (CTR + F),但有 70,000 个关键字。

无论如何,到目前为止我所拥有的是:

int main()
{
     ifstream namesfile("names.txt");   //names list
     ifstream miscfile("misc.txt");     //misc text
     vector<string> vecnames;           //vector to hold names
     vector<string> vecmisc;            //vector to hold misc text
     size_t found;

     string s;
     string t;

     while (getline(namesfile,s))       
         veccomp.push_back(s);  

     while (getline(miscfile,t))        
         vectenk.push_back(t);

     //outer loop iterates through names list
     for (vector<string>::size_type i = 0; i != vecnames.size(); ++i) {
         //inner loop iterates through the lines of the mist text file
         for (vector<string>::size_type j = 0;j != vecmisc.size(); ++j) {
             found=vecmisc[j].find(vecnames[i]);
             if (found!=string::npos) {
                 cout << vecnames[i] << endl;
                 break;
             }
         }
     }

     cout << "SEARCH COMPLETE";

     //to keep console application from exiting
     getchar();

     return 0;
 }

现在,就提取我需要的数据而言,这非常有效,但是,它非常慢并且显然效率低下,因为每个名称都要求我可能再次搜索整个文件,这会给出(75000 x 杂项文本文件中的行数)迭代。如果有人可以提供帮助,我一定会很感激。一些示例代码是最受欢迎的。此外,如果这有什么区别的话,我正在使用 Dev C++。谢谢。


Use a std::hash_set。将所有关键字插入集合中,然后遍历大型文档,每次遇到一个单词时,测试集合中是否包含该单词。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 搜索性能 的相关文章

随机推荐

  • 如何将 Node docker 容器与 postgres docker 容器连接

    我有一个 CRUD 应用程序在我的本地计算机上的节点上运行 它运行在节点上 以 postgres 作为数据库 使用 knex js 作为查询构建器等 我创建了一个 docker 文件和一个 docker compose 文件 并且容器启动
  • 使用 Html Agility Pack 从 html 中抓取所有文本

    Input p foo a href http www example com bar a baz p Output foo bar baz 我知道htmldoc DocumentNode InnerText 但它会给foobarbaz 我
  • Outlook ItemAdd 事件未一致触发

    我正在尝试确定收到的邮件是否是垃圾邮件 Itemadd 事件仅有效一次 它不会持续触发 我该如何解决这个问题 我做以下事情 public partial class ThisAddIn private void ThisAddIn Star
  • 使解决方案中的每个 csproj 面向不同的 C# 版本

    我有一个包含五个 C 控制台应用程序项目的解决方案 我希望每个项目都针对不同版本的 C MyLearningSolution sln CSharp01 csproj CSharp02 csproj CSharp03 csproj CShar
  • 字符串文字和字符串对象相加的区别

    字符串文字和字符串对象相加有什么区别 例如 String s1 hello String s2 hello1 String s3 hello hello1 String s4 hellohello1 String s5 s1 s2 Syst
  • java.io.StreamCorruptedException:读取超过 1 个对象时格式错误[重复]

    这个问题在这里已经有答案了 我正在尝试添加一个对象 OneChatMessage每次单击按钮时都会将其保存到一个文件中 然后我尝试从文件中读取所有对象并将其加载到ArrayList 但我得到一个StreamCorruptedExceptio
  • 建议设计:应用程序中几乎每个对象都有记录器

    我正在写一个应用程序 我使用 NLog 进行日志记录 在这个应用程序中 几乎每个对象都可以写入日志 我为此定义了受保护的成员 protected Logger logger protected virtual Logger Logger g
  • VSTS Rest API - 创建版本

    我想利用此处定义的 VSTS Rest API 开始发布 https www visualstudio com en us docs integrate api rm releases create a release 但我需要在创建版本时
  • 框架 CFBundleIdentifier 碰撞

    我使用 Cocoa Touch Framework 制作了一个自定义 SDK 按照这些说明进行制作https kodmunki wordpress com 2015 03 04 cocoa touch frameworks for ios8
  • 如何在 for...循环中使用 setTimeout

    我想要的是这个 新闻行情类型功能 从 ul 标签获取 li 列表 循环遍历所有li并获取文本 通过 firefox console log 在控制台中显示文本 获取下一个 li 并重复 直到显示所有 li 这就是目标 但是 setTimeo
  • 找到大小为 k 的子集,使得值之间的最小距离最大

    假设我有一个数组 其中包含n整数 如何找到尺寸的子集k使得minimum子集中所有整数对之间的距离为maximized 我的意思是他们距离最远 示例 数组a 1 2 6 7 10 and k 3 subset 1 6 10 最小距离为410
  • v8 术语中 merge、phi、effectphi 和 dead 的含义

    我正在尝试阅读 v8 源代码 特别是其中的编译器部分 以更好地理解优化和缩减过程 以便查找错误 我遇到了评论中使用的一些术语 但似乎无法解释 评论是这样的 Check if this is a merge that belongs to a
  • 更改工具栏中的图标颜色

    我正在使用 Android 组件navigation for a DrawerLayout with NavigationView public class MainActivity extends AppCompatActivity pr
  • 解析推送通知在 Android 上不起作用

    我正在为我的 Android 应用程序使用解析推送通知 我按照教程下载 jar 文件 然后将其导入到我的项目中 并将此代码添加到我的清单中
  • 我的路由如何使用 ASP MVC3 在 URL 中间使用可选参数?

    我希望我的 URL 使用以下约定 controller id action 而不是 controller action id 我尝试按如下方式设置路线 routes MapRoute Campaign controller action i
  • kotlin协程使用withContext获取非阻塞代码时withTimeout不会取消

    我正在使用 withContext 将函数转换为不会阻塞调用线程的挂起函数 为此我使用了https medium com elizarov blocking threads suspending coroutines d33e11bf476
  • 如何将https重定向到新域?

    我重新开发了公司网站 但在重定向 SSL 方面遇到了一些问题 键入或单击http olddomain org重定向到https newdomain com 但是 输入或单击链接https olddomain org不重定向到https ne
  • JComponent JPanel 缩放、平移和坐标问题

    我有一个JPanel带有用户可以缩放和平移的矢量图像 覆盖此图像的是 透明 JComponent 我允许用户注释底层图像 这在全尺寸下效果很好 但是如果我放大 使用AffineTransform 重叠坐标也会受到影响 因此 如果用户在图像上
  • Ember 没有获得某些属性

    当从以下位置运行以下命令时UserController在 Google Chrome 上 ember couchdb kit 0 9 余烬数据v1 0 0 beta 3 56 g8367aa5 Ember v1 0 0 and 这个 cou
  • C++ 搜索性能

    我有两个文本文件 其中包含大约 70 000 个姓名的列表 1 5MB 另一个包含将从各种来源获得的文本 也就是说 每次执行程序时 该文件的内容都会发生变化 0 5MB 本质上 我希望能够将一些文本粘贴到文本文件中 并查看在我的列表中找到了