C++代码优化及细节编程
for循环优化
1.尽量不要在for循环中重复声明相同变量
vector<int> nums={1,2,3,4,5};
for(auto &x:nums)
{
int a = x;
.....
}
改为
int a = 0;
for(auto &x:nums)
{
a = x;
......
}
2.循环退出条件的变量在循环外申明初始化
int nums[]={1,2,3,4,5};
//每执行一次循环,都会计算一次sizeof(nums)/sizeof(int)
for(int i=0;i<sizeof(nums)/sizeof(int);++i)
{
.....
}
改为
int size = sizeof(nums)/sizeof(int);
for(int i=0;i<size ;++i)
{
.....
}
3.循环条件增加时,使用++i,而不使用i++
vector<int> nums={1,2,3,4,5};
for(int i=0;i<nums.size();i++)
{
.....
}
改为
for(int i=0;i<nums.size();++i)
{
.....
}
4.双重循环采用小循环包大循环的方式
vector<int> nums={1,2,3,4,5};
vector<int> nums_2={1,2,3,4,5,6,7,8,9,10};
int j=0;
for(int i=0;i<nums.size();++i)
{
for(j=0;j<nums_2.size();++j)
{
.....
}
}
5.循环内执行a+=b优于a=a+b
6.循环内三目运算符优于if判断,但不利于代码可读性
//找出大于3的个数
vector<int> nums={1,2,3,4,5};
int count= 0;
for(auto &x:nums)
{
count = x>count?x:count;
}
参数传递
参数传递时,以const &传递效率比值传递效率高,因为前者不会调用拷贝构造函数,后者会拷贝一份临时变量。