在阅读了为什么处理排序数组比处理未排序数组更快?,我在主循环中添加了一个额外的测试.似乎这个额外的测试使程序更快.
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) 我想在迭代向量时擦除某些元素,但是下面的代码导致"向量迭代器不可递增"断言失败.
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)
这段代码有什么问题?