我已经实现了一个使用查找表的快速比较功能。由于项目中多个类都用到了这个函数,所以我需要确保在整个程序执行过程中,查找表只有一份。
查找表是一个vector<int>
大小为 65536 的简单表。我希望在程序开始时初始化此表,而不是在第一次使用时。如何处理这个问题?
以下代码片段是我的比较函数的当前版本。我相信通过制作lookup_table
一个静态变量,问题只会部分解决,因为静态变量的生命周期从程序流第一次遇到声明时开始。
int fast_compare(const char* array1, const char* array2, int length)
{
static const vector<int> lookup_table = init_lookup_table();
// process the input arrays...
// ...
return lookup_table[...];
}
vector<int> init_lookup_table()
{
vector<int> lut(65536);
// ----------------------------
// initialize the look-up table
// ...
// ...
// end of initialization
// ----------------------------
return lut;
}