C++ 从无序的_映射中删除最后一个元素时需要更多时间

C++ 从无序的_映射中删除最后一个元素时需要更多时间,c++,visual-studio-2010,unordered-map,C++,Visual Studio 2010,Unordered Map,我发现了一个非常奇怪的现象,那就是当从无序映射中删除最后一个元素时,它花费了更多的时间,因此我的程序似乎在那里无休止地运行。我的IDE:VS2010 在我的程序中,无序映射的定义如下: unordered_map<void*, int> m_hashmap_pos; 那么,我们是否可以假设您的程序没有问题?我问你,因为你没有发。您只描述了您正在做的事情,而没有代码的描述意义甚微。或者更好的是,发布一个完整的、但很小的程序来复制这个问题。如果问题像你说的那么明显(一个无序的映射,用值

我发现了一个非常奇怪的现象,那就是当从无序映射中删除最后一个元素时,它花费了更多的时间,因此我的程序似乎在那里无休止地运行。我的IDE:VS2010

在我的程序中,无序映射的定义如下:

unordered_map<void*, int> m_hashmap_pos;

那么,我们是否可以假设您的程序没有问题?我问你,因为你没有发。您只描述了您正在做的事情,而没有代码的描述意义甚微。或者更好的是,发布一个完整的、但很小的程序来复制这个问题。如果问题像你说的那么明显(一个无序的映射,用值填充它,删除值),那就不会那么困难了。请,请,请解释一下,让映射形式
int*
int
(如果你按照我的想法做的话,后面应该是
std::size\t
),并执行类似于
map[newint*]=index
的操作。我认为,这是一种实现内存池的非常奇怪和低效的方法。
int main()
{
    int N = 36000;
    unordered_map<void*, int> hm;
    vector<int**> A(N);
    for (int i=0; i<N; i++)
    {
        A[i] = new int*;
        hm[A[i]] = i;
    }

    for (int i=0; i<N; i++)
    {
        if (i == N-1)
        {
           cout << "Start removing last element from unordered_map: Now is ";
           system("time /t");
        }

        hm.erase(A[i]);

        if (i == N-1)
        {
           cout << "removing completed! Now is ";
           system("time /t");
        }
     }
     system("pause");
}