리스트 존나 큰거 중간에서 두개로 나눌려는데
constant time으로 나누는법 없음?
예를 들어
master = {1,2,3,4,5,6,7,8,9,10}
sub = {}
일때 master 4번째 이터레이터에서 쪼개면
master = {4, 5, 6, 7, 8, 9, 10}
sub = {1, 2, 3}
이런식으로 한번에 하는법 없음?
splice는 linear time이던디
리스트 존나 큰거 중간에서 두개로 나눌려는데
constant time으로 나누는법 없음?
예를 들어
master = {1,2,3,4,5,6,7,8,9,10}
sub = {}
일때 master 4번째 이터레이터에서 쪼개면
master = {4, 5, 6, 7, 8, 9, 10}
sub = {1, 2, 3}
이런식으로 한번에 하는법 없음?
splice는 linear time이던디
4번째 이터레이터까지 가야되잖아 근데 찾아보니까 std::list는 특수해서 이터레이터 증감 연산을 제공 안 한다네 - return 0;
결국은 O(n) 접근을 할 수 밖에 없고 splice는 그걸 위해 있는게 아니라서 직접 구현해야된다는 얘기가 스탭 오버플로우에 있다 - return 0;
링크드리스트 아니었음? 내가 포인터 직접 조작하는 방법없음? ㅈ같네
4번째 까지 가는거는 이미 앞에서 계산했는데 이제 거기서 또갤려니깐 4번째 까지 가는걸 또하더라고;;
음.. 함수를 따로 만들고 이터레이터로 늬가 직접 비벼보는 방법이 최선인듯. 이터레이터 레인지로 새로 하나 만들고, 원래 리스트는 잘라버리고. 문제는 이터레이터를 받을 때 O(n)이라는거지? 그냥 벡터 쓰는게 더 성능은 좋을 것 같음 - return 0;
애미...
걍 링크드리스트 클래스 만들어서 쓰까... STL성능 정말 눈물난다
그냥 벡터 쓰셈. STL에서 list 쓰는게 좋은 경우는 진짜 손에 꼽을 정도 - return 0;