프로그래머스 문제를 풀다가 시간초과로 인해 자꾸 틀리는 경우가 발생해 2차원 multiset의 사용법을 공부했다.
multiset의 장점은 자동으로 sort를 해주는 것이다.
그 기본적인 사용법은 다른 곳에서 보고 오는 것이 더 낫다.
2차원 multiset의 선언은 vector같은 다른 STL과 같다.
multiset<multiset<int>> ms;
혹은
multiset<vector<int>> ms;
선언은 쉽다.
나는 2차원배열의 첫번째 원소들을 토대로 정렬할 예정이다. ex) 1,2 6,2, 5,6 -> 1,2 5,6 6,2
그러므로 multiset<vector<int>>형을 쓰겠다.
multiset은 대괄호로 참조가 안되니 iterator를 써야한다.
그래서
multiset<vector<int>>::iterator iter로 iterator를 만들어주고 iter = ms.begin()으로 초기화
이제 2차원 중 행은 접근을 할 수 있다.
해당 행의 원소들은 *(iter->begin())으로 접근하면 된다.
multiset<vector<int>> ms = { {1, 2}, {6, 2}, {5, 6} };
for (multiset<vector<int>>::iterator iter = ms.begin(); iter != ms.end(); iter++)
cout << *(iter->begin()) << "\n";
댓글 영역