Vec
Vec
๋ ํ์ ํ ๋น๋ ํ์ค ๊ฐ๋ณ ํฌ๊ธฐ ๋ฒํผ์
๋๋ค:
fn main() { let mut v1 = Vec::new(); v1.push(42); println!("v1: len = {}, capacity = {}", v1.len(), v1.capacity()); let mut v2 = Vec::with_capacity(v1.len() + 1); v2.extend(v1.iter()); v2.push(9999); println!("v2: len = {}, capacity = {}", v2.len(), v2.capacity()); // Canonical macro to initialize a vector with elements. let mut v3 = vec![0, 0, 1, 2, 3, 4]; // Retain only the even elements. v3.retain(|x| x % 2 == 0); println!("{v3:?}"); // Remove consecutive duplicates. v3.dedup(); println!("{v3:?}"); }
Vec
์ Deref<Target = [T]>
๋ฅผ ๊ตฌํํฉ๋๋ค. ์ด๋ Vec
์์ ์ฌ๋ผ์ด์ค ๋ฉ์๋๋ฅผ ํธ์ถ ํ ์ ์๋ค๋ ์๋ฏธ์
๋๋ค.
Vec
์String
์ด๋HashMap
๊ณผ ๊ฐ์ ์ปฌ๋ ์ ํ์ ์ ๋๋ค. ๋ฒกํฐ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ ์ ์ฅํฉ๋๋ค. ์ด๋ ์ปดํ์ผ ์์ ์ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์ ํ์๊ฐ ์๋ค๋ ์๋ฏธ๊ณ , ๋ฐํ์์ ๋ ์ปค์ง ์๋ ์์์ง ์๋ ์์ต๋๋ค.Vec<T>
๋ ์ ๋ค๋ฆญ ํ์ ์ด๊ธฐ๋ ํฉ๋๋ค. ํ์ง๋งT
๋ฅผ ๊ผญ ์ง์ ํด์ค ํ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ, ๋ฌ์คํธ ํ์ ์ถ๋ก ์ด ๋ฒกํฐ์ ์ฒ์push
ํ๋ ๋ฐ์ดํฐ๋กT
๋ฅผ ์ ์ ์์์ต๋๋ค.vec![...]
๋Vec::new()
๋์ ์ธ ์ ์๋ ํ์ค ๋งคํฌ๋ก๋ก์, ์ด๊ธฐ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋ฒกํฐ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.- ๋ฒกํฐ๋
[
]
๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ํจ๋์ด ๋ฐ์ํฉ๋๋ค. ๋์get
์ ์ฌ์ฉํ๋ฉดOption
์ ๋ฐํํฉ๋๋ค.pop
ํจ์๋ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. - ๋ฒกํฐ๋ฅผ ์ํํ๋ฉด์ ๊ฐ์ ๋ณ๊ฒฝํ ์๋ ์์์ ๋ณด์ฌ์ฃผ์ธ์:
for e in &mut v { *e += 50; }