[RUST vs C++] 16. 표준 라이브러리
https://google.github.io/comprehensive-rust/std-types.html
Standard Library Types - Comprehensive Rust 🦀
This segment should take about 1 hour and 20 minutes. It contains: SlideDuration Standard Library3 minutes Documentation5 minutes Option10 minutes Result10 minutes String10 minutes Vec10 minutes HashMap10 minutes Exercise: Counter20 minutes For each of the
google.github.io
Rust의 표준 라이브러리는 c++의 것과 궤가 많이 다르다.
C++의 표준 라이브러리
C++의 표준 라이브러리는 STL이라 부르고, 굉장히 많다.
그래프 알고리즘, 2D 그래픽, 네트워크고 들어올랑 말랑 하는 중.
✔ 희대의 명령, std::move. 이건 어떤 값을 rvalue로 바꾸는 것임.
C++의 lvalue와 rvalue
c++에는 value category가 있다. lvalue, rvalue, xvalue, prvalue.
다 알 필요는 없다. 어떤 문장이 끝나서, 걔가 살아있으면 lvalue, 걔가 사라졌으면 rvalue.
예를 들어, 어떤 클래스의 생성자를 그냥 호출했다고 치자. A(); 이런 식으로.
그럼 걔는 끝나고 죽으니까 rvalue.
또, x++와 ++x를 비교하자.
x++ : rvalue
++x : lvalue
둘의 동작을 생각해보자. 그럼 해결된다.
한편 Rust에선 GCD, lower_bound 이런게 없어서 일일이 다 구현해야 한다.
그리고, 몇 안되는 이 라이브러리들도 C++은 std안에 다 있지만, Rust는 core, alloc, std와 같이 계층이 서로나뉘어짐.
16.2 Doc은 그냥 읽어보면 됨.
16.3 Option, 16.4 Result는 모두 앞에 설명했던 내용임.
16.5 String
✔ String : 힙에 만들어지는 문자를 조작할 수 있는 Type.
String에서 len은 실제 차지한 공간, capacity는 메모리에 확보해둔 공간. Vector와 같은 원리이다.
16.6 Vec
retain은 조건에 만족하는 애들만 남기기
dedup은 겹치는 애들을 제거하기(delete duplicate)