c++ - 在 C++ 中处理大数据的最佳方式?

标签 c++ sql large-data

<分区>

我有很多对象(大约 30k)。存储和访问它们的最佳方式是什么?它们都有一个特定的 ID,但我也想用它们的名称、类别等来过滤和搜索它们。这是一个非常简单的类,如下所示:

class objclass {
int id;
std::string name;
...
}

我在考虑 SQL,但我不知道那是否是最好的方法。

提前致谢! :)

更新:谢谢大家!我想我会用 vector 去。感谢您澄清 30k 并没有那么大^^ 对我来说,从来没有处理过如此大量的数据,这似乎相当大;)

最佳答案

std::vector 听起来很合适。如果您事先知道您获得了多少元素,请使用 vector::reservevector::resize 来避免过度分配。否则在大量插入后使用 vector::shrink_to_fit

为了加快对 id 的搜索,对 vector 进行排序并使用 binary_search/lower_bound

如果您有很多内容相同的字符串,请使用享元类。这也可以大大加快字符串比较。

要快速搜索字符串成员,将迭代器的 vector 放入容器中并对它们进行排序,或者使用 boost::multi_index

一个小的计算来支持这一点:假设 int 是 4 个字节,你的字符串平均有 20 个字母,30 000 个元素,大约 2 兆字节。不用担心。

关于c++ - 在 C++ 中处理大数据的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21755279/

相关文章:

sql - Forking(postgreSQL数据库结构

ios - 有没有更简单的方法来处理 ios 应用程序中的许多数据更改?

sql - PostgreSQL : How do I take multiple rows with values in different columns and combine into one row with all the values on one line?

sql - 我想为列上的运行值添加总和,但如果序列失败,那么我们不必添加

c++ - 在 C 中处理非常大的距离矩阵(或 C++,如果有帮助的话)

python - 在Python中使用大型数据集进行OOP的好方法

c++ - 函数修复 "was not declare in this scope"

c++ - 通用输出类签名的正确类型

c++ - 使用常量和非常量函数 - C++

c++ - 检查输入是否等于数组中存在的值?