例如: vector<int> v;
v.push_back(1);
v.push_back(2);
for( vector<int>::iterator it = v.begin();
it != v.end();
++ it ){
printf("hw\n");
}每次for循环一遍都要执行一次v.end()的计算。我想知道,既然v在for的作用域里面是不变的,编译器会不会把v.end()先计算出来,放到一个临时变量里面,每次it和它比较就行了,而不用每次都调用函数。C++标准是否有这方面的优化规定? 如果没有的话,VC有什么编译选项是可以优化这个比较变量的?
v.push_back(1);
v.push_back(2);
for( vector<int>::iterator it = v.begin();
it != v.end();
++ it ){
printf("hw\n");
}每次for循环一遍都要执行一次v.end()的计算。我想知道,既然v在for的作用域里面是不变的,编译器会不会把v.end()先计算出来,放到一个临时变量里面,每次it和它比较就行了,而不用每次都调用函数。C++标准是否有这方面的优化规定? 如果没有的话,VC有什么编译选项是可以优化这个比较变量的?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货