访问此数据的最佳方式是什么
What is the best way to access this data?
对于我正在处理的程序,我正在从mysql获取数据并写入csv文件。 然后,我将从csv中获取数据,并将其放入C++的2d向量中。
我的 csv 文件很可能在 1 到 150 万行和 8 列之间的任何范围内。 现在,可以将 csv 视为按 ID 号排序的一堆块。 也就是说,例如,前 100 行可能属于 ID 号 1,接下来的 80 行属于 ID 号 2,依此类推。 我将它们全部放在一个 csv 中的原因是,从 mysql 请求数据很慢,我只想发出一个请求。
我的问题是,在我的C++程序中,一次创建一个包含整个 csv 文件的大型向量 (150 万 x 8),还是创建一个循环,我创建一个 100 x 8 向量,然后创建一个 80 x 8 向量,依此类推? 如果我没有很好地提出这个问题,我很抱歉。如果您有任何其他问题需要帮助澄清,我很乐意回答。
理论上分配大块会更好(new 在大块上有更好的性能)。如果您使用的是 std::vector<T>
,不要忘记从一开始就保留足够的内存,以防止在用数据填充它时重新分配。
首先决定你更喜欢稍后查找取决于 ID,你可以使用 std::unordered_multimap
其中键作为你的记录 ID,其他元素是你的类的成员变量。二维数组在这里std::unordered_multimap
无效,并且无法使用 ID 作为查找键,因为您将无法将 vector
的索引转换为您的 ID,因为存在重复的 ID。
如果您更喜欢查找,请创建一个结构或类以将记录的所有其他元素保留为类的数据成员,并使用 ID 作为std::unordered_multimap
的键。这是您可以使用 C++11 的情况。
如果您没有 C++11,并且您更喜欢多键查找,则更喜欢使用 std::multimap
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 在reactor中存储eventHandlers的最佳方式是什么
- 引用 std::any 或 not_yet_in_std::whatever 的惯用方式是什么?
- 在C++中,建议通过数组循环的方式是什么?
- DLL共享数据的推荐方式是什么
- 等待线程的最佳方式是什么
- 将uint8_t*buffer和size_tbufferlen从C++传递到C中的API函数的最佳方式是什么
- 只显示片段着色器的最佳方式是什么
- 复制文件的最佳方式是什么,以便我可以在复制过程中轻松取消复制?
- 在 c++ 中打印到控制台的最佳方式是什么?
- 在Qt Creator中应用代码更改的快捷方式是什么?
- 在C 中超负荷构造函数的合适方式是什么
- 执行随机开关函数的QT方式是什么连续两次使用相同情况的方法
- 在某些代码中覆盖方法的方式是什么?
- 为单个函数同时声明多个变量的最佳方式是什么
- Qt中数据类(模型)和视图/控制器类之间的数据通信的正确方式是什么
- 在c++中存储一个对象或不存储对象的首选方式是什么
- 在C 项目中包含库的不同方式是什么?
- 解释"Bit String"的最佳方式是什么
- 计算差异数据并通过网络发送的最佳方式是什么