我有一个程序,在启动时会读取csv文件。最初,我认为更改程序行为而不必重新编译它会很有用。但是,事实证明,对该文件进行更改需要部署该程序的新版本。
std::map<SomeId, std::vector<double/int>>
,并可以通过double get(SomeId id, size_t idx)
之类的函数进行访问现在,我考虑将文件的内容嵌入程序中。这是我考虑过的一些替代方法:
LoadResource
等获取std::string
或类似内容,然后解析该文本并填充我的数据结构。char const * const text = "<the content of the file>;
,解析该文本并填充我的数据结构。编写一个更复杂的代码生成器来解析csv并直接初始化数据结构
std::map<SomeId, std::vector<double>> initialize()
{
std::map<SomeId, std::vector<double>> data;
data[id1] = std::vector<double> { ... the numbers from the file ... };
...
return data;
}
转储数据结构并直接生成get函数:
std::array<double, N> const data1 { ... the numbers from the file ... };
double get(SomeId id, size_t idx)
{
switch(id)
{
case id1 : return data1[idx];
case id2 : return data2[idx];
...
}
}
我应该使用哪种技术?我错过了什么吗?