Метод with_capacity
Метод with_capacity создаёт новый пустой вектор
с заранее выделенной ёмкостью. Параметром метод принимает
число, которое указывает, сколько элементов вектор сможет
хранить без перевыделения памяти. В отличие от метода
new, который создаёт вектор с нулевой ёмкостью,
with_capacity позволяет избежать многократных
перевыделений памяти при добавлении большого количества
элементов. Длина созданного вектора при этом остаётся
равной нулю.
Синтаксис
Vec::with_capacity(capacity)
Пример
Давайте создадим вектор с ёмкостью 5
и проверим его длину и ёмкость:
fn main()
{
let v: Vec<i32> = Vec::with_capacity(5);
println!("len: {}", v.len());
println!("capacity: {}", v.capacity());
}
Результат выполнения кода:
len: 0
capacity: 5
Пример
Давайте создадим вектор с ёмкостью 5
и добавим в него несколько элементов:
fn main()
{
let mut v: Vec<i32> = Vec::with_capacity(5);
v.push(1);
v.push(2);
v.push(3);
println!("{:?}", v);
println!("len: {}", v.len());
println!("capacity: {}", v.capacity());
}
Результат выполнения кода:
[1, 2, 3]
len: 3
capacity: 5
Пример
Давайте сравним ёмкость вектора, созданного
через new, и вектора, созданного
через with_capacity:
fn main()
{
let v1: Vec<i32> = Vec::new();
let v2: Vec<i32> = Vec::with_capacity(10);
println!("v1 capacity: {}", v1.capacity());
println!("v2 capacity: {}", v2.capacity());
}
Результат выполнения кода:
v1 capacity: 0
v2 capacity: 10
Смотрите также
-
метод
new,
который создаёт новый пустой вектор -
метод
capacity,
который возвращает текущую ёмкость вектора -
метод
reserve,
который резервирует дополнительную ёмкость -
метод
shrink_to_fit,
который уменьшает ёмкость до текущей длины