由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 如何优化这段C代码
相关主题
type inferience 好处是什么一个C++的概念问题
[bssd]这段代码有什么问题intel icc hash_map 求救!
有人看看这段ruby代码能够如何优化吗?STL感觉实在太变态了
这段code有啥问题?[菜鸟问题]类模板问题
以下两个C 代码是不是完全等价?c++ iterator 弱问
[吐槽]抽象真是不一定好c++ template question:
终于知道了 ++i 比 i++快请问Linux底下有没有最简易的show 2D x-y curve的工具
问问开发ios的,有用C++来组织代码的么?请教C数组定义问题
相关话题的讨论汇总
话题: flag话题: code话题: col话题: row话题: 10
进入Programming版参与讨论
1 (共1页)
x******9
发帖数: 203
1
根据判断标志位flag决定循环体的顺序先行后列还是先列后行. 代码段code相同.如何
避免code重复写两遍?
if (flag==1)
{for (i=0;i<10;i++)
for (j=0;j<5;j++)
{ code...

}
}
else if (flag==2)
{for (j=0;j<5;j++)
for (i=0;i<10;i++)
{ code...

}
}
X****r
发帖数: 3557
2
最简单就是把中间的code写成单独的函数了。
以下方法不得已而用,一般不推荐:
for (k = 0; k < 50; k++) {
if (flag == 1) {
i = k / 5;
j = k % 5;
} else if (flag == 2) {
i = k % 10;
j = k / 10;
}
// code...
}

【在 x******9 的大作中提到】
: 根据判断标志位flag决定循环体的顺序先行后列还是先列后行. 代码段code相同.如何
: 避免code重复写两遍?
: if (flag==1)
: {for (i=0;i<10;i++)
: for (j=0;j<5;j++)
: { code...
:
: }
: }
: else if (flag==2)

N***m
发帖数: 4460
3
把code放在一个单独的函数行不行?
这样的话也就多写了两行。

【在 x******9 的大作中提到】
: 根据判断标志位flag决定循环体的顺序先行后列还是先列后行. 代码段code相同.如何
: 避免code重复写两遍?
: if (flag==1)
: {for (i=0;i<10;i++)
: for (j=0;j<5;j++)
: { code...
:
: }
: }
: else if (flag==2)

a****l
发帖数: 8211
4
use switch.

【在 x******9 的大作中提到】
: 根据判断标志位flag决定循环体的顺序先行后列还是先列后行. 代码段code相同.如何
: 避免code重复写两遍?
: if (flag==1)
: {for (i=0;i<10;i++)
: for (j=0;j<5;j++)
: { code...
:
: }
: }
: else if (flag==2)

G****A
发帖数: 4160
5
不知道这样算不算优化了代码(code中只出现一次for的双循环)?代价是多了两个int变
量。
int row, col;
if(flag==1)
{row = 10; col = 5;}
else
{row = 5; col = 10;}
for(int i=0; i for(int j=0; j ....
}
}

【在 x******9 的大作中提到】
: 根据判断标志位flag决定循环体的顺序先行后列还是先列后行. 代码段code相同.如何
: 避免code重复写两遍?
: if (flag==1)
: {for (i=0;i<10;i++)
: for (j=0;j<5;j++)
: { code...
:
: }
: }
: else if (flag==2)

N***m
发帖数: 4460
6
in general, no.
since code may generate different results for different ordering

【在 G****A 的大作中提到】
: 不知道这样算不算优化了代码(code中只出现一次for的双循环)?代价是多了两个int变
: 量。
: int row, col;
: if(flag==1)
: {row = 10; col = 5;}
: else
: {row = 5; col = 10;}
: for(int i=0; i: for(int j=0; j: ....

r****t
发帖数: 10904
7
写 row major iterator/ column major iterator, 然后后面的 logic 就公用了。

【在 x******9 的大作中提到】
: 根据判断标志位flag决定循环体的顺序先行后列还是先列后行. 代码段code相同.如何
: 避免code重复写两遍?
: if (flag==1)
: {for (i=0;i<10;i++)
: for (j=0;j<5;j++)
: { code...
:
: }
: }
: else if (flag==2)

t***o
发帖数: 4265
8
看你的意思就是想提高代码复用。那就用函数吧。
//code
foo(i,j){
code...
...
}
//col first
col_first(){
for (i=0;i<10;i++)
for (j=0;j<5;j++)
foo(i,j);
}
//row first
row_first(){
for (j=0;j<5;j++)
for (i=0;i<10;i++)
foo(i,j);
}
//main program
if(flag==1) col_first();
elseif(flag==2) row_first();

【在 x******9 的大作中提到】
: 根据判断标志位flag决定循环体的顺序先行后列还是先列后行. 代码段code相同.如何
: 避免code重复写两遍?
: if (flag==1)
: {for (i=0;i<10;i++)
: for (j=0;j<5;j++)
: { code...
:
: }
: }
: else if (flag==2)

1 (共1页)
进入Programming版参与讨论
相关主题
请教C数组定义问题以下两个C 代码是不是完全等价?
用那个design pattern好?[吐槽]抽象真是不一定好
关于inserter终于知道了 ++i 比 i++快
binary_search只要求forward_iterator?问问开发ios的,有用C++来组织代码的么?
type inferience 好处是什么一个C++的概念问题
[bssd]这段代码有什么问题intel icc hash_map 求救!
有人看看这段ruby代码能够如何优化吗?STL感觉实在太变态了
这段code有啥问题?[菜鸟问题]类模板问题
相关话题的讨论汇总
话题: flag话题: code话题: col话题: row话题: 10