タイムスタンプがタイムスタンプと共に保存されたマップにない場合、マップで最も近い一致するタイムスタンプを見つけ、最も近い値をキーとして使用したいと思います。私がやろうとしていることの基本的な構造のセットアップがありますが、最も近いタイムスタンプを見つける方法がわかりません
typedef std::map<std::string,int> Map;
Map::iterator it;
Map my_map;
my_map["2010-01-26 17:02:12"]= 1;
my_map["2010-01-25 08:55:29"]= 2;
my_map["2010-01-24 08:55:29"]= 3;
string timestamp = "2010-01-24 08:55:30"; // would return 3
string timestamp1 = "2010-01-27 01:55:30"; // would return 1
it = my_map.find(timestamp);
if(it == my_map.end()){
//not sure how to approach this
}
アップデート
std::string
かなり大きなコード ベースを からに変換することは避けようとしてuint64_t
いますが、パフォーマンスは向上しますが、それほど大きな問題ではありません。
I can't get the std::map::lower_bound
or std::map::upper_bound
solutions to work here は、IDE ONE での私の試みです。