deque로 2차원 이상의 배열을 만들려면 어떻게 해야하나요?
글쓴이: dltkddyd / 작성시간: 화, 2014/05/06 - 2:12오전
deque<deque<int>> obj1;
위와 같이 선언해놓은 obj1의 메모리를 2차원으로 할당하려면 어떻게 해야하나요? 혹은 그 이상의 배열은 어떻게 할당해야하는지요?
resize() 함수를 사용하면 되겠지만 왠지 불편하네요. 그러니까 다음과 같이 말이죠.
obj1.resize(5); for(unsigned long int i=0;i<5;i++) { obj1[i].resize(3) }
이렇게 하면 5행*3열의 동적배열로 메모리가 할당됩니다. 그런데 만약 3차원, 4차원, 5차원, ..., 100차원, ..., n차원 등을 이런 식으로 for 반복문을 사용해 할당하는 것은 프로그래머에게는 엄청난 고욕으로 보이는데요. 좀더 속쉬원하게 메모리를 할당할 수 있는 방법이 없을까요?
Forums:
한 십몇차원 정도는 정말 재수없는 경우도 있으니
한 십몇차원 정도는 정말 재수없는 경우도 있으니 이해하는데, 그 이상이면 프로그램 잘못짜고 있다고 느끼시면 됩니다.
보통은 4차원이상은 거의 안쓰고, 4차원조차도 1차원으로 관리합니다.
실제로 큰 차원을 쓸 필요가 없다는 사실은 알지만..
저도 그런 사실은 어느 정도 인식하고 있지만, 혹시라도 100에 하나 큰 차원을 다룰 필요가 있다고 했을 때 언급한 방식의 메모리 할당은 불편하다고 봅니다. 혹시 이런 방식으로 메모리를 관리한다면 어떨까 생각해봤는데요.
appendMem 에서 100*4*2*2 의 4차원 배열로 메모리를 증가시킵니다. 이런 식의 할당이 편리하지 않을까요? 매번 반복문을 사용해서 메모리를 할당하는 방법이 여간 번거로운 작업이 아니기에 appendMem이라는 함수를 만들어 사용해보았는데, 제법 편리하더군요. 이런 함수 만들어 사용하고 계신 분들도 있겠지요?
참고로 저 함수로 100차원의 할당도 가능합니다. 그것이 몇 차원이든 간에 차원의 깊이만큼 콤마로 숫자를 구분해서 언급해주면 해당 차원의 배열로 메모리가 추가됩니다.
이런 식으로 deque를 개선해보는 것이 나쁜 생각은 아니겠죠?
본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.
댓글 달기