小编kiw*_*won的帖子

附加的条件声明使程序更快

在阅读了为什么处理排序数组比处理未排序数组更快?,我在主循环中添加了一个额外的测试.似乎这个额外的测试使程序更快.

int main()
{
    // Generate data
    const unsigned arraySize = 32768;
    int data[arraySize];

    for (unsigned c = 0; c < arraySize; ++c)
         data[c] = std::rand() % 256;

    //Don't sort the array
    //std::sort(data, data + arraySize);

    // Test
    clock_t start = clock();
    long long sum = 0;

    for (unsigned i = 0; i < 100000; ++i)
    {
        // Primary loop
        for (unsigned c = 0; c < arraySize; ++c)
        {
            if (data[c] >= 128)
                sum += data[c];

            //With …
Run Code Online (Sandbox Code Playgroud)

c++ performance branch-prediction

4
推荐指数
1
解决办法
431
查看次数

使用swap-and-pop迭代时,在向量中擦除元素

我想在迭代向量时擦除某些元素,但是下面的代码导致"向量迭代器不可递增"断言失败.

for(auto iter=vec.begin(); iter!=vec.end(); ++iter) 
{     
    if((*iter).isDead())
    {        
        std::swap(*iter, vec.back());//swap with the back       
        vec.pop_back();     //erase the element
    } 
} 
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?

c++ vector

4
推荐指数
2
解决办法
4089
查看次数

标签 统计

c++ ×2

branch-prediction ×1

performance ×1

vector ×1