将Lua表转换为C ++

时间:2019-03-21 16:03:44

标签: c++ lua

我有一个类似这样的Lua表:

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},
}--many lines like these. Open, high, low, close, sd, far_sd are different numbers.

我将此代码翻译为C ++。帮我找到类似的容器(字典)。它必须支持非常高的速度,因为我将使用蛮力学习此数据。 Lua脚本的工作时间为1周。我学习C ++可以更快地完成这项工作。 Lua暴力破解圈看起来像:

for sd=start_sd,end_sd,1 do 
 for far_sd=start_far_sd,end_far_sd,0.25 do 
 ..... work with container, check sd and far_sd parameters. Seeking best result.
 end 
end

1 个答案:

答案 0 :(得分:1)

实际上不清楚您要问什么。从可用信息中,我提出了一些想法:

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

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