[英]How do I remove the elements of vector that occur in another vector in Rust?
[英]How do I shift the elements inside a Rust vector to the right and put the out-of-bounds element at the beginning?
我試圖將向量中的元素向右移動,然后將越界元素放回開頭; 向量的旋轉。
這是在向量 1 步驟中移動第一個元素的偽代碼。 由於向量只有 5 個元素,所以5
回到向量的開頭:
let V = vec![1, 2, 3, 4, 5];
A = V.move[0].cycle();
A = [5, 1, 2, 3, 4];
A = V.move[0].cycle();
這是我的嘗試,但由於如果索引超出范圍,Rust 不會旋轉,因此可能難以實現。
在 Python 中,可以將pop
函數與列表一起使用:
>>>m = [1, 2, 3, 4, 5]
>>>m += [m.pop(0)]
>>>m
[2, 3, 4, 5, 1]
使用 for 循環,可以將所有元素移動為[5, 1, 2, 3, 4]
。 是否有與 Rust 中的pop
函數等效的函數? 如果有一個功能可以將元素一起移動,那就更好了。
您正在尋找[T]::rotate_right
和[T]::rotate_left
。 示例( 游樂場):
let mut v = vec![1, 2, 3, 4, 5];
v.rotate_right(1);
println!("{:?}", v);
這輸出:
[5, 1, 2, 3, 4]
如果您發現自己rotate_*
調用rotate_*
,您應該考慮使用不同的數據結構,因為這些方法是線性時間操作。 例如,請參閱此答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.