【问题标题】:Issues with a vector<vector<string>> setupvector<vector<string>> 设置的问题
【发布时间】:2016-08-27 13:54:14
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 看起来像是数据库的工作,可能是一些 NoSQL 的东西。
  • 在开始时调用std::vector::reserve(),尤其是主向量,具有足够高的值,应该会提高push_back的性能。

标签: c++ vector text-parsing


【解决方案1】:

查看std::unordered_map。对你来说应该会快很多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2012-02-16
    • 2022-01-24
    相关资源
    最近更新 更多