0

好的,让我们重新开始

我试图从 std::vector 中删除一个元素,由于某种原因,只有当我跨过时它在释放模式下才会非常慢。

这是完整的来源:

#include <iostream>
#include <vector>
#include <windows.h>

class data
{
public:
    int i;
};

void Test(int n)
{
    std::vector<data> v;
    data d;

    for (int i=0; i<n; ++i)
    {
        v.push_back(d);
    }

    ULONGLONG nTick = GetTickCount64();
    v.erase(v.begin()+1);
    std::cout << n << " " << GetTickCount64() - nTick << std::endl;
}

int main()
{
    Test(10000);
    Test(100000);
    Test(1000000);

    return 0;
}

当我越过线

    v.erase(v.begin()+1);

它分别在发布

10000 -> 2 seconds
100000 -> 18 seconds
1000000 -> 182 seconds

但是对于所有这些来说,调试几乎是即时的吗?

4

0 回答 0