gpt4 book ai didi

data-structures - BitVec 错误地附加 0 而不是 1

转载 作者:行者123 更新时间:2023-12-03 11:24:31 25 4
gpt4 key购买 nike

我是 Rust 的初学者。我正在尝试使用 BitVec库来表示位数组。我开始通过附加 0 或 1 的序列来玩它,但我在这样做时遇到了一些问题。当我附加一个 x 0 序列然后是一个 y 1 序列时,它所做的是附加 x+y 零。请注意,如果我之前只附加 1 而未附加 0,则它可以工作。这是我的代码:

extern crate bit_vec;
use bit_vec::BitVec;

fn main(){
let mut bits = BitVec::new(); // creates an empty array of bits
append_zero(&mut bits);
append_one(&mut bits);
append_zero(&mut bits);
append_one(&mut bits);
append_one(&mut bits); // everything works perfectly till here
append_n_ones(&mut bits, 2); // this works
append_n_zeroes(&mut bits, 3); // this too
append_n_ones(&mut bits, 2); // this appends 2 zeroes instead!
println!("{:?}", bits);
}

fn append_zero(vector: &mut BitVec) {
vector.push(false);
}

fn append_one(vector: &mut BitVec) {
vector.push(true);
}

fn append_n_zeroes(vector: &mut BitVec, n: usize) {
let mut to_append = BitVec::from_elem(n, false); // creates a BitVec with n 0s
println!("trying to append: {:?}", to_append);
vector.append(&mut to_append);
}

fn append_n_ones(vector: &mut BitVec, n: usize) {
let mut to_append = BitVec::from_elem(n, true); // creates a BitVec with n 1s
println!("trying to append: {:?}", to_append);
vector.append(&mut to_append);
}
这是输出:
trying to append: 11
trying to append: 000
trying to append: 11
010111100000
请注意,最后一行应该是 010111100011 .此外,在追加之前, 11正确打印。但随后它附加 00 .
我正在使用 this website测试我的 Rust 代码,但在本地它有同样的问题。我试着看看 code for the BitVec library但对于我目前的 Rust 水平来说,它太先进了。

最佳答案

bit_vec crate 虽然古老而流行,但仅用于维护。我是替代品的作者, bitvec ,它会按照您的意愿运行,并且(在我看来)是更好的产品。
您可以通过替换 bit_vec 来使用您编写的代码与 bitvecBitVec::from_elemBitVec::<Lsb0, usize>::repeat .不幸的是,bitvec在 Rust 游乐场上不可用,所以我无法直接向您展示。

关于data-structures - BitVec 错误地附加 0 而不是 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64183383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com