Удаление значения из вектора в Rust
Отдельной команды «убрать по значению» нет. Ищут номер в цикле: сравнивают очередной элемент с искомым числом и запоминают индекс, когда нашли совпадение.
После нахождения вызывают удаление по этому номеру. Если значений несколько, обычно убирают первое найденное или повторяют поиск с начала, пока список не станет нужным.
Найдем и уберем число 20 из готового
набора:
let mut nums = vec![10, 20, 30];
let target = 20;
for i in 0..nums.len() {
if nums[i] == target {
nums.remove(i);
break;
}
}
println!("{}", nums.len());
println!("{}", nums[1]);
Длина станет 2, на втором месте
окажется 30. Перебор по номерам
удобен, когда порядок обхода важен:
let mut nums = vec![5, 5, 5];
let cut = 5;
for i in 0..nums.len() {
if nums[i] == cut {
nums.remove(i);
break;
}
}
println!("{}", nums.len());
Дан следующий вектор:
let mut nums = vec![4, 7, 4];
Уберите первое вхождение 4,
найдя номер циклом. Выведите длину.
Дан следующий вектор:
let mut nums = vec![1, 2, 3, 2];
let bad = 2;
Найдите первый номер, где лежит bad,
уберите элемент по этому номеру и выведите
длину.
Скажите, зачем после нахождения номера часто прерывают цикл.