作者pziyout (pziyout)
看板C_and_CPP
标题Re: [问题] for loop依二进位count
时间Wed Mar 1 12:54:54 2017
※ 引述《ozone (道别,下段旅程。)》之铭言:
: 两个int阵列array1, array2, 长度皆为8, 想在每个位置从其中一个array取出值
: 组成新的array同样长度也是8, 共2^8=256种组合, 不知有什麽比较有效率的方法?
: 我只会用for loop, int i=0;i<256;i++, 将i转成2进位字串
: 再对照此字串的8个字元位置是0或1 个别选择array1或array2组成新的array...
: 感觉绕了好大一圈...不晓得有什麽简洁的方法完成这个操作? 感谢
不要转为二进位字串,直接取值如下,事实上,还满简洁的:
const int N = 8 ;
int i , j ;
int a[N] = {11,12,13,14,15,16,17,18};
int b[N] = {21,22,23,24,25,26,27,28};
int c[N] ;
for ( i = 0 ; i < 256 ; ++i ) {
cout << i+1 << " : " ;
for ( j = 0 ; j < N ; ++j ) {
c[j] = ( i&(1<<j) ? a[j] : b[j] ) ;
cout << c[j] << " " ;
}
cout << endl ;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.115.25.29
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1488344097.A.155.html
1F:推 ozone: 我不了解这种二进位处理方式 有什麽关键字可以让我搜寻学 03/01 13:30
2F:→ ozone: 习的吗 感谢! 03/01 13:30
3F:推 jerryh001: 查 & 符号 和 << 符号的意义 03/01 13:45
4F:推 ozone: bitwise operation, thanks 03/01 13:49