向量

2017-05-29  本文已影响0人  BIGHAI

vector向量是一种可以动态或“可增长”的数组,被实现为标准库类型Vec<T>。vector总是在堆上分配数据。

1.常规用法

vector将他们的内容以连续存储在堆上,这意味着他们必须在编译时就知道T的大小。但是有些类型不可能再编译时就能够确定其大小,为此你需要保存一个指向该类型的指针:Box类型就适合这种情况。

let v:Vec<i32> = vec![1, 2, 3, 4, 5];
let v2:Vec<i32> = vec![0; 10];//10个i32数据类型的0
let v:Vec<i32> = vec![1,2,3,4,5];
println!("{}", v[2]);
fn main(){
  let v:Vec<i32> = vec![1,2,3];
  let index:usize = 2;
  println!("{}", v[index]);
}

如果你尝试利用一个非usize的索引去获取向量的值的话,那么将会抛出一个错误。

var v:Vec<i32> = vec![1,2,3,4,5];
for value in v{
    println!("{}", value);
}

需要注意的是,在使用vector的所有权遍历之后再次遍历它会出错。但是我们可以多次使用vector变量的引用进行多次遍历。

var v:Vec<i32> = vec![1,2,3,4];
for value in v{
    println!("{}", value);
}
for value2 in v{
    println!("{}", value2);//error:use of moved value: `v`
}

但是对他的引用进行多次遍历还是可以的:

var v:Vec<i32> = vec![1,2,3,4];
for value in &v{
    println!("{}", value);
}
for value in &v{
    println!("{}",value);
}

END

上一篇 下一篇

猜你喜欢

热点阅读