Rust标准库是否有一个函数可以在给定种子和lambda的情况下生成无限迭代器,就像Java 8 Streams提供的那样?如果没有,Rust的类似替代品是什么?
Stream.iterate(1, x -> 2 * x);
Run Code Online (Sandbox Code Playgroud) 所以我想知道 Java 中合并排序最有效的实现是什么(如果它的时间效率会根据语言而变化)。这个问题可能很微不足道,但我的最终目标是向更有经验的程序员学习。这是我做的两个例子:
//version I made.
public static double[] mergeSort(double[] arreglo) {
if (arreglo.length > 1) {
int d = (arreglo.length / 2);
double[] arreglo1 = Arrays.copyOfRange(arreglo, 0, d),
arreglo2 = Arrays.copyOfRange(arreglo, d, arreglo.length);
arreglo1 = mergeSort(arreglo1);
arreglo2 = mergeSort(arreglo2);
return merge(arreglo1, arreglo2);
} else {
return arreglo;
}
}
public static double[] merge(double[] arreglo1, double[] arreglo2) {
double[] convi = new double[arreglo1.length + arreglo2.length];
for (int i = 0, m1 = 0, m2 = 0; i < convi.length; i++) …Run Code Online (Sandbox Code Playgroud) 使用此表达式时:
mem::size_of::<T>() * 8
Run Code Online (Sandbox Code Playgroud)
像这样:
value % (mem::size_of::<T>() * 8);
value * (mem::size_of::<T>() * 8);
Run Code Online (Sandbox Code Playgroud)
编译器是否能够优化它:
value & ((mem::size_of::<T>() * 8) - 1);
value >> LOG2_OF_EXPRESION;
Run Code Online (Sandbox Code Playgroud)
有没有相当于C++的东西constexpr所以我可以从函数中返回它并在需要编译时表达式的地方使用它?
for(int i =0; i<8;i++){
for(int j =0; j<8;j++){
Ratsuk.getNewtablero().getMesa(i,j).setBackground(matrizcolor[i][j]);
if (Ratsuk.getNewtablero().getMesa(i,j).getBackground()==Color.lightGray);
Ratsuk.getNewtablero().getMesa(i,j).setEnabled(false);
}
}
Run Code Online (Sandbox Code Playgroud)
Ratsuk.getNewtablero().getMesa(i,j) 用于调用newtablero内部的JButton 2d数组,matrizcolor是相同大小的2d颜色数组.
当它运行时,该阵列中的所有按钮不仅禁用浅灰色的按钮.任何1可以解释我为什么?