[C++] 구조적 바인딩과 tie의 주의점
c++에는 tuple을 만들어 주는 tie가 존재합니다. tie는 값들의 tuple을 생성하여 참조를 반환합니다. 구조적 바인딩에서 auto는 컴파일러가 오른쪽 표현식의 타입에 따라 왼쪽 변수들의 타입을 추론합니다. 따라서 auto [a, b, c] = tie(x, y, z) 같은 형식으로 값을 대입하면 a, b, c는 auto에 의해 참조자 형태가 됩니다. #include using namespace std;int main(){ int x = 1, y = 2, z = 3; auto [a, b, c] = tie(x, y, z); x = 5; cout 출력 : 5 2 3 따라서 tuple을 생성해 값을 반환하는 make_tuple을 이용하면 값을 할당받게 됩니다. #include using nam..
[C++] vector에서의 회전
vector에는 원소를 회전시켜주는 메소드가 존재한다. 1. 시계 방향으로 회전std::rotate(v.begin(), v.begin() + k, v.end());위와 같이 사용하면 원소가 시계방향으로 k번 회전한다.즉 v={1, 2, 3, 4, 5} 에 k=2를 대입하여 실행하면 v={3, 4, 5, 1, 2} 가 된다. 2. 반시계 방향으로 회전std::rotate(v.rbegin(), v.rbegin() + k, v.rend());위와 같이 사용하면 반시계 방향으로 회전한다.즉 v={1, 2, 3, 4, 5} 에 k=2를 대입하여 실행하면 v={4, 5, 1, 2, 3}가 된다. 시간 복잡도는 보통 O(n)이고, 회전 후 원래 첫 번째 요소의 새로운 위치를 가리키는 반복자를 반환한다.