比较hash查询与std::find算法的差异
#include <boost/functional/hash.hpp>
#include <boost/unordered_set.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
int main()
{
boost::unordered_set<std::string, boost::hash<std::string>> lv;
std::vector<std::string> vec;
boost::posix_time::ptime time_now,time_end;
boost::posix_time::millisec_posix_time_system_config::time_duration_type time_duration;
for(int i = 0; i < 199999; i++)
{
lv.insert(boost::lexical_cast<std::string>(i));
vec.push_back(boost::lexical_cast<std::string>(i));
}
time_now = boost::posix_time::microsec_clock::universal_time();
lv.find(boost::lexical_cast<std::string>(180000));
time_end = boost::posix_time::microsec_clock::universal_time();
time_duration = time_end - time_now;
std::cout<<"time_duration = "<<time_duration<<std::endl;
time_now = boost::posix_time::microsec_clock::universal_time();
std::find(vec.begin(), vec.end(), boost::lexical_cast<std::string>(180000));
time_end = boost::posix_time::microsec_clock::universal_time();
time_duration = time_end - time_now;
std::cout<<"time_duration = "<<time_duration<<std::endl;
}
查找的时候果然相差很大,但是插入操作很耗时啊