标签归档:hash_map

RSS feed of hash_map

最后更新于 .

最近有一个server在重启的时候总要花费5分钟左右来加载配置文件,导致外网服务不可用,今天和几个同事一起研究了一下,总算找到了问题所在. 抽象出代码如下:

#include <sys/time.h>
#include <stdio.h>
#include <memory.h>
#include <map>
#include <string>

#if 0
#include <hash_map.h>
#else
#include <tr1/unordered_map>
#define hash_map std::tr1::unordered_map
#endif

using namespace std;

class CTimer
{
public:
    CTimer()
    {
        memset(&tpStart, 0, sizeof(tpStart));
        memset(&tpEnd, 0, sizeof(tpEnd));
    }
    void Begin()
    {
        gettimeofday(&tpStart ...

最后更新于 .

一.有关hash_map的使用
map中可以用 map.erase(it++)或者it = map.erase(it);来实现迭代删除
但是在hash_map中

iterator erase(iterator it);

这个函数声明和定义是不存在的
取而代之的是

void erase(iterator it);

但它本身也没有实现迭代删除
如果要迭代删除的话 还是要用 erase(it++)

二.localtime()的误用
localtime的函数声明如下:

struct tm *localtime(const time_t *timep);

而localtime的内部实现是一个static变量,所以,如果你这样调用:

time_t t1=time(NULL);
struct tm *p1=localtime(&t1);
sleep(10);
time_t t2=time(NULL ...