Vorrei inizializzare un vettore di zeri con una dimensione specifica determinata in fase di esecuzione.Creazione di un vettore di zeri per una dimensione specifica
In C, sarebbe come:
int main(void)
{
uint size = get_uchar();
int A[size][size];
memset(A, 0, size*size*sizeof(int));
}
Ecco la funzione di supporto che ho provato a scrivere a Rust, ma penso che la sintassi per affettare 0..size
offende il compilatore. Inoltre, sembra più prolisso della versione C. C'è un modo più idiomatico per fare questo?
fn zeros(size: u32) -> Vec<i32> {
let mut zero_vec: Vec<i32> = Vec::with_capacity(size);
for i in 0..size {
zero_vec.push(0);
}
return zero_vec;
}
giuro che i vecchi documenti utilizzati per spiegare un metodo here e nessuna delle permutazioni della [0 ; size]
notationfrom_elem()
sembrano funzionare
mi piacerebbe attaccare questo in un algoritmo di ricerca stringa in ultima analisi:
pub fn kmp(text: &str, pattern: &str) -> i64 {
let mut shifts = zeros(pattern.len()+1);
}
Se '' vec non funziona per voi, quale versione di Rust sei su!? La mia risposta funziona sulla beta. – anderspitman
Sì, ho aggiornato Rust e ora funziona ...> __ <; Molte grazie! – elleciel