📜  锈病——矢量

📅  最后修改于: 2022-05-13 01:54:35.445000             🧑  作者: Mango

锈病——矢量

Vector是 Rust 中的一个模块,它提供容器空间来存储值。它是一个连续的可调整大小的数组类型,具有堆分配的内容。它由Vec表示 Rust 中的向量具有 O(1) 索引和向量中的推送和弹出操作也需要 O(1) 复杂度。向量确保它们永远不会分配超过isize::MAX bytes

一个简单的解释向量的方式是,它是一个像数组一样存储值的容器,但它比数组数据结构有更多的优势。它可以在运行时动态增加大小。它由标准库提供,可以存储任何数据类型的值。向量的数据分配在堆上。它的长度定义了向量中存在的元素数量。它的容量定义了这个向量的堆上实际分配的空间,形式为 2^n。

句法:

Vec 

Where T denotes type of data.

在 Rust 中创建一个向量:

要创建 Vector,只需遵循下面列出的方法。

1. 使用 Vec::new() 方法:

let v : Vec = Vec::new();  

这里v是将包含 64 位整数数据类型的初始化向量。它在Vec::new() 方法的帮助下初始化



Rust
fn main() {
 
    let v : Vec = Vec::new(); 
 
    // printing the size of vector
    println!("{ }",v.len());
}


Rust
fn main() {
 
    let v = vec!['G','E','E','K','S'];
 
    // printing the size of vector
    println!("{ }",v.len());
}


Rust
fn main() {
 
    let v = vec!['G','E','E','K','S'];
 
    // here index is the non negative value which is smaller than the size of the vector
    let index: usize = 3;
 
    //getting value at given index value
    let ch: char = v[index];
 
    print!("{ }\n",ch);
}


Rust
// Method to print the get value
fn value(n:Option<&char>) 
{ 
    match n 
    { 
        Some(n)=>println!("Element of vector {}",n), 
        None=>println!("None"), 
    } 
}
 
fn main() {
 
    let v = vec!['G','E','E','K','S'];
 
    // here index is the non negative value which is
    // smaller than the size of the vector
    let index: usize = 3;
 
    // getting value at given index value
    let ch: Option<&char> = v.get(index);
    value(ch);
}


Rust
fn main() {
 
    let v = vec!['G','E','E','K','S'];
 
    print!("Vector elements : "); 
 
    //loop to interate elements in vector
    for i in v 
    { 
        // iterating through i on the the vector
        print!("{} ",i); 
    } 
    print!("\n",);
}


Rust
fn main() {
 
    let mut v : Vec = Vec::new();
 
    v.push('A');
    v.push('B');
    v.push('C');
    // now vector elements will be
 
    // loop to interate elements in vector
    for i in v 
    { 
        // iterating through i on the the vector
        print!("{} ",i); 
    } 
    print!("\n");
}


输出:

2. 在 Rust 中使用宏:

let v = vec!['G','E','E','K','S'];   

这里这个向量是使用宏vec!创建的它存储了我们在这里提供的 char 类型的值。

fn main() {
 
    let v = vec!['G','E','E','K','S'];
 
    // printing the size of vector
    println!("{ }",v.len());
}

输出:



访问向量:

下面列出的方法可用于在 Rust 编程中访问向量。

1. 使用下标运算符:

与其他语言中的索引概念类似,下标运算符可用于通过其索引直接访问向量中的值。重要的是要注意索引从 0 开始。

let v = vec!['G','E','E','K;','S'];

//here index is the integer non negative value which is smaller than the size of the vector. 
char ch = v [ index ];

例子:

fn main() {
 
    let v = vec!['G','E','E','K','S'];
 
    // here index is the non negative value which is smaller than the size of the vector
    let index: usize = 3;
 
    //getting value at given index value
    let ch: char = v[index];
 
    print!("{ }\n",ch);
}

输出:

2.使用get()方法

访问向量元素的第二种方法是使用 get(index) 方法,将向量的索引作为参数传递。它返回类型为 Option<&t> 的值。

let v = vec!['G','E','E','K;','S'];

//here index is the integer non negative value which is smaller than the size of the vector. 
let value: Option<&char> = v.get(index);  

例子:

// Method to print the get value
fn value(n:Option<&char>) 
{ 
    match n 
    { 
        Some(n)=>println!("Element of vector {}",n), 
        None=>println!("None"), 
    } 
}
 
fn main() {
 
    let v = vec!['G','E','E','K','S'];
 
    // here index is the non negative value which is
    // smaller than the size of the vector
    let index: usize = 3;
 
    // getting value at given index value
    let ch: Option<&char> = v.get(index);
    value(ch);
}

输出:



3. 对向量进行迭代:

为了访问向量,我们也可以像在其他编程语言中所做的那样遍历向量。我们可以使用for 循环来遍历一个向量。

let v = vec!['G','E','E','K;','S'];

print!("Vector elements :");  

for i in v  
{  
  // iterating through i on the the vector
  print!("{} ",i);  
}  

例子:

fn main() {
 
    let v = vec!['G','E','E','K','S'];
 
    print!("Vector elements : "); 
 
    //loop to interate elements in vector
    for i in v 
    { 
        // iterating through i on the the vector
        print!("{} ",i); 
    } 
    print!("\n",);
}

输出:

更新向量:

创建向量后,我们可以使用 push() 方法更新向量。如果向量大小小于向量容量,或者如果向量大小大于向量容量,则推送新元素,然后分配向量大小的两倍空间,然后复制新分配的向量中的所有元素并释放内存前一个向量。

它推动向量末尾的元素。

let mut v : Vec = Vec::new();

vec.push('A');
vec.push('B');
vec.push('C');
// now vector size will be 3 

例子:

fn main() {
 
    let mut v : Vec = Vec::new();
 
    v.push('A');
    v.push('B');
    v.push('C');
    // now vector elements will be
 
    // loop to interate elements in vector
    for i in v 
    { 
        // iterating through i on the the vector
        print!("{} ",i); 
    } 
    print!("\n");
}

输出: