늘리기와 줄이기
삽입하고 삭제하고 크기를 조정해 보세요.
늘리기와 줄이기은(는) CoddyKit의 무료 Learn Rust Coding 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn Rust Coding 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.
벡터의 크기는 변경할 수 있습니다
벡터의 중요한 특징은 실행 중에 크기를 변경할 수 있다는 점입니다. 데이터가 늘어나면 요소를 추가하고, 더 이상 필요하지 않으면 제거할 수 있습니다.
크기를 변경하려면 벡터를 반드시 mut으로 선언해야 합니다.
push로 늘리기
push 메서드는 끝에 요소 하나를 추가해 벡터의 크기를 1만큼 늘립니다. 크기를 늘릴 때 가장 흔히 사용하는 방법입니다.
아래에서 벡터의 길이가 0에서 3으로 늘어납니다.
fn main() {
let mut v = Vec::new();
v.push("a");
v.push("b");
v.push("c");
println!("len = {}", v.len());
}pop으로 제거하기
pop 메서드는 마지막 요소를 제거하고 Option으로 감싸 반환합니다. 정상적으로는 Some(value)를 반환하고, 벡터가 이미 비어 있으면 None을 반환합니다.
이 작업으로 벡터의 크기가 1만큼 줄어듭니다.
fn main() {
let mut v = vec![1, 2, 3];
let last = v.pop();
println!("popped {:?}", last);
println!("now {:?}", v);
}중간에 삽입하기
insert 메서드는 지정한 인덱스에 값을 삽입하고, 그 뒤의 요소들을 오른쪽으로 이동합니다. 인덱스는 0부터 현재 길이까지여야 합니다.
여기서는 99를 위치 1에 삽입합니다.
fn main() {
let mut v = vec![10, 20, 30];
v.insert(1, 99);
println!("{:?}", v);
}인덱스로 제거하기
remove 메서드는 인덱스에 있는 요소를 삭제해 반환하고, 빈자리를 채우기 위해 그 뒤의 요소들을 왼쪽으로 이동합니다.
주의하세요. 존재하지 않는 인덱스를 제거하면 패닉이 발생합니다.
fn main() {
let mut v = vec![10, 20, 30];
let gone = v.remove(0);
println!("removed {}", gone);
println!("{:?}", v);
}<code>swap_remove</code>로 빠르게 제거하기
순서가 중요하지 않을 때는 swap_remove가 더 빠릅니다. 모든 요소를 이동하는 대신 마지막 요소를 제거된 위치로 옮깁니다.
이렇게 하면 순서는 바뀌지만 이동에 드는 비용을 피할 수 있습니다.
fn main() {
let mut v = vec![1, 2, 3, 4];
let x = v.swap_remove(0);
println!("took {}", x);
println!("{:?}", v);
}모두 비우기
clear 메서드는 모든 요소를 한 번에 제거하여 길이가 0인 빈 벡터로 만듭니다. 벡터는 다시 사용할 수 있도록 할당된 용량을 유지합니다.
벡터를 처음부터 다시 채우고 싶을 때 유용합니다.
fn main() {
let mut v = vec![1, 2, 3];
v.clear();
println!("empty? {}", v.is_empty());
}길이로 자르기
truncate 메서드는 끝에 있는 초과 요소를 버려 벡터를 선택한 길이로 줄입니다. 벡터가 이미 더 짧다면 아무 일도 일어나지 않습니다.
여기서는 처음 두 요소만 남깁니다.
fn main() {
let mut v = vec![1, 2, 3, 4, 5];
v.truncate(2);
println!("{:?}", v);
}<code>extend</code>로 이어 붙이기
extend 메서드는 다른 컬렉션의 모든 항목을 뒤에 추가합니다. 한 번에 각 요소에 push를 호출하는 것과 같습니다.
아래에서는 두 번째 목록을 첫 번째 목록의 끝에 추가합니다.
fn main() {
let mut v = vec![1, 2];
v.extend(vec![3, 4, 5]);
println!("{:?}", v);
}<code>retain</code>으로 일부만 유지하기
retain 메서드는 시험을 통과한 요소만 남기고 나머지는 제자리에서 제거합니다. bool을 반환하는 클로저를 전달합니다.
여기서는 짝수만 남깁니다.
fn main() {
let mut v = vec![1, 2, 3, 4, 5, 6];
v.retain(|n| n % 2 == 0);
println!("{:?}", v);
}요소 정렬하기
sort 메서드는 요소를 작은 값부터 큰 값 순서로 제자리에서 재배치합니다. 길이는 바꾸지 않고 배열만 바꿉니다.
정렬하려면 벡터가 mut여야 합니다.
fn main() {
let mut v = vec![3, 1, 4, 1, 5];
v.sort();
println!("{:?}", v);
}빠른 확인
벡터를 늘리고 줄이는 방법을 얼마나 이해했는지 확인해 보세요.
복습
push, insert, extend로 벡터를 늘리고, pop, remove, swap_remove, clear, truncate로 줄였습니다.
또한 retain으로 필터링하고 sort로 순서를 정렬했습니다. 다음에는 벡터 안에 구조체를 저장합니다.
자주 묻는 질문
“늘리기와 줄이기” 강의는 무료인가요?
네 — “늘리기와 줄이기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn Rust Coding 강의 전체를 잠금 해제할 수 있습니다. Learn Rust Coding 강의에는 총 4개의 강의가 포함되어 있습니다.
“늘리기와 줄이기”에서 뭘 배우나요?
삽입하고 삭제하고 크기를 조정해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Learn Rust Coding을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn Rust Coding을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn Rust Coding은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“늘리기와 줄이기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn Rust Coding 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn Rust Coding 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 벡터 만들고 채우기
- 인덱싱과 반복
- 늘리기와 줄이기
- 구조체 벡터