c++ - vector<vector<string>> 设置的问题

标签 c++ vector text-parsing

我创建了一个应用程序,用于在 Windows/Linux 上解析约 30 万种产品(每种产品都有自己的 70 个类别)的分隔文本数据库。该应用程序的目的是比较两个提供的文本文件(一个来自 ftp 和一个本地/当前文件)并使用任何更改更新本地文件(无论是更新单个产品字段,添加或删除产品)以及保留这些更改的日志。

问题是:有没有比二维 vector 更有效的方法?也许 map 或成对的 vector 会更有效?基本上,比较将逐行、逐个产品、逐个类别进行。如果在两个列表中都找到匹配的条目,则检查该记录以确认它在两个列表中是相同的(否则更新),如果没有找到匹配的条目,则从本地列表中删除或添加丢失的产品(如果在本地列表,但出现在 ftp 列表中)。

所有这些上下搜索以及新成员的潜在删除/添加(顺序无关紧要,因此添加被推回本地 2d vector 的末尾)似乎导致应用程序性能受到影响,所以我想知道是否有更有效的方法来解决这个问题。

注意:顺序不重要,不允许重复输入,局部 vector 将使用相同的分隔格式写回到文本文件中。后端 php 应用程序需要这种类型的文本/分隔格式。

感谢您的宝贵时间和任何建议。

最佳答案

查看std::unordered_map .对您来说应该快得多。

关于c++ - vector<vector<string>> 设置的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36988558/

相关文章:

c++ - 强制函数为纯函数

c++ - 如何在 Windows 上进行内存分析?

c++ - 没有默认构造函数的成员对象的初始化列表

php - 从 PHP 中的分隔字符串中提取 float

c++ - 同步共享内存

c++ - 如何在 vector 中的某个数字之后重新计算一个过程

c++ - 使用 std::vector::erase 和 const_iterators

c++运行时错误,类中 vector 的random_shuffle

algorithm - 从文本中提取关键句子

sql - 我可以在 Firebird POSITION 函数中使用通配符吗