deque로 2차원 이상의 배열을 만들려면 어떻게 해야하나요?

dltkddyd의 이미지

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 반복문을 사용해 할당하는 것은 프로그래머에게는 엄청난 고욕으로 보이는데요. 좀더 속쉬원하게 메모리를 할당할 수 있는 방법이 없을까요?

익명 사용자의 이미지

한 십몇차원 정도는 정말 재수없는 경우도 있으니 이해하는데, 그 이상이면 프로그램 잘못짜고 있다고 느끼시면 됩니다.
보통은 4차원이상은 거의 안쓰고, 4차원조차도 1차원으로 관리합니다.

dltkddyd의 이미지

저도 그런 사실은 어느 정도 인식하고 있지만, 혹시라도 100에 하나 큰 차원을 다룰 필요가 있다고 했을 때 언급한 방식의 메모리 할당은 불편하다고 봅니다. 혹시 이런 방식으로 메모리를 관리한다면 어떨까 생각해봤는데요.

deque<deque<deque<deque<int>>>>  obj1;
obj1.appendMem(100,4,2,2);

appendMem 에서 100*4*2*2 의 4차원 배열로 메모리를 증가시킵니다. 이런 식의 할당이 편리하지 않을까요? 매번 반복문을 사용해서 메모리를 할당하는 방법이 여간 번거로운 작업이 아니기에 appendMem이라는 함수를 만들어 사용해보았는데, 제법 편리하더군요. 이런 함수 만들어 사용하고 계신 분들도 있겠지요?
참고로 저 함수로 100차원의 할당도 가능합니다. 그것이 몇 차원이든 간에 차원의 깊이만큼 콤마로 숫자를 구분해서 언급해주면 해당 차원의 배열로 메모리가 추가됩니다.
이런 식으로 deque를 개선해보는 것이 나쁜 생각은 아니겠죠?

본인 맞습니다.
인증샷
우헤헤헤... 로 대신합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.