将 Lua table 转换为 C++

我有一个如下的 Lua table:

t_big={
{open,high,low,close,sd,far_sd},
{open,high,low,close,sd,far_sd},
{open,high,low,close,sd,far_sd},
{open,high,low,close,sd,far_sd},
}-- 类似这样的多行代码。Open、high、low、close、sd、far_sd 都是不同的数字。

我想将这段代码翻译成 C++。请帮我找到类似的容器(字典)。它必须支持非常高的速度,因为我将使用 brute force(暴力方法)学习这些数据。Lua script(脚本)工作了一个星期。我学习 C++ 是为了更快地完成这项工作。 Lua brute force circle(循环)如下:

for sd=start_sd,end_sd,1 do
 for far_sd=start_far_sd,end_far_sd,0.25 do
 ..... 使用容器,检查 sd 和 far_sd 参数。寻找最佳结果。
 end
end
点赞
用户5697743
用户5697743

实际上,您的问题并不是很清楚。从现有的信息中,我想到了几个想法:

  1. 经典数组或 std :: array。它们的通用缺点是它们的大小在编译时(源文件)定义,这可能是整体上一个不好的想法。将条目存储为“结构体”以便于字段命名。
  2. std :: vector。与前一个相同,但它的大小是运行时大小。以同样的方式存储条目。
  3. 从你的“暴力”例子中,很明显你的方式是错误的。看看任何一种SQL数据库:SQLite可能是目前最好的选择。它需要一些学习,但总体上应该很容易。如果您的表是硬编码的(我很确定它不是,但谁知道),您可以找到针对lua的SQLite绑定并轻松导出它。如果不是,您总是可以创建内存数据库,这是超级快速的(无论如何不要忘记对表进行索引!)。为了使事情更加简单,您很可能需要使用一些SQLite的包装器,比如 https://github.com/SqliteModernCpp/sqlite_modern_cpp

如果语言本身并不重要(您只是为了速度而来到C ++),请考虑使用lua的SQLite绑定,这对您来说应该更容易,并且仍然比您现在的暴力表格快得多。

2019-03-23 10:01:24