我需要检查一个ID(一个长整数)是否在~10,000个ID的列表中.我需要在循环中执行大约10 ^ 9次,速度相对重要.使用c ++设置最快的方法吗?就像是:
set<long> myset;
// (Populate myset)
long id = 123456789;
if(myset.find(id) != myset.end()) {
// id is in set
}
Run Code Online (Sandbox Code Playgroud)
或者有更快的方法吗?
Eri*_*rik 17
如果您的长度范围有限,最快的方法是位图(例如vector<bool>).如果这unordered_set不可行,则应尝试(hash_set).如果这种情况持续发生最坏情况,那么请使用set