我需要为程序创建一个简单的查找函数,并希望确认完成任务的最佳方式。我有一个两列 CSV 文件,它代表一个字符串(键)和双精度(值)对。该列表大约有 3,000 行/键值对。每次执行我的程序时,我将在此表上进行大约 5,000 次查找。下面是一些伪代码,后面跟着几个问题:
CSV file - columns are "Tenant" and "PD"
// Declare an unordered map
unordered_map<string,double> TenantPDLookup;
// Read from CSV file into the map object - I can do this part
void ReadTenantLookup(unordered_map<string,double> TenantPDLookup) {...}
// Lookup the values (PD) based on a series of keys (Tenant)
// Here is my code that is not working (note this is a type string, string)
string GetTenantRating(string const& TenantName, Assumptions& Ass,
tenant_lookup_map const& TenantRatingLookup) {
auto TenantRating = TenantRatingLookup.find(TenantName);
if (TenantRating == TenantRatingLookup.end())
return Ass.DefaultTenantRating;
return TenantRating->second;
}
我关于如何实现这一点的问题如下:
- 如何进行实际查找?我正在考虑一个简单的函数,它在传递(a)对我的地图的引用和(b)一个键时返回值。有人可以提供一个简单的框架吗
- 我的字符串值是“可排序的”,因为它们是字母术语——我是否应该以某种方式将其放入有序列表以促进更快的查找?
- 这种方法有意义吗?