c++中unordered_map的坑

unordered_map本身有hash表,不排序的情况下,对需要键值对的数据处理是比较方便的,存储、查找都很快了,但是如果不注意键值类型的话,有可能会掉坑的。

比如:

unordered_map<string, vector<BigTestStruct>> testMapVector;//随便定义了一个map,string键其实只给了4个值,就是说testMapVector.size()的值只有4而已。。。。

然而让人想不到的事情是对这个map进行遍历,竟然用了100毫秒,如果map中的vector全部被取一遍的话,大概10分钟已经过去,这真是个悲伤的故事啊。。。。

for (auto testmap : testMapVector)
{
        string lstr = testmap.first;
        testvector.push_back(testMapVector[lstr].at(i));
}

换了一个办法将map中的string键放入一个vector中,做同样的遍历取值,你会发现快的飞起,有兴趣的可以写个小程序试一下。

for (auto lstr : testnameVector)
{
        testvector.push_back(testMapVector[lstr].at(i));
}

猜你喜欢

转载自blog.csdn.net/f120854632/article/details/89185645