近期遇到一个问题,如何高效率的对比软件接收到的数据和数据库里的数据,传统方式下用c语言的话,可以使用for和if进行遍历,但效率低下。
通过查找资料,发现可以通过map,hash_map,unordered_map来实现。其中map效率比较低,hash_map未列入c++标准,最后只剩下unordered_map。
先看unordered_map的实现。
#include <unordered_map>
using namespace std;
unordered_map < int, int> unorderedMAP;
插入值
for(int i=0;i<1000;i++)
{
pair<int,int> myshopping (i*10,i);
unorderedMAP.insert(myshopping);
}
查询值
unordered_map< int,int>::const_iterator got = unorderedMAP.find (100);
if ( got != unorderedMAP.end() )
{
value=got->second;
}
为了测试这块的执行时间,通过QueryPerformanceFrequency和QueryPerformanceCounter获取计算机的计数值,结果大约14,而Sleep(1)的计数值大约2376,因此这块的执行时间为:14*1ms/2376=5.89us,可以看出执行时间