C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 강좌/문서
C++Builder Programming Tutorial&Docments
[195] [Boost 살펴보기] 4. multi_array
Lyn [tohnokanna] 18123 읽음    2009-05-11 15:25
multi_array는 다차원 정적배열을 지원하는 클래스이다.
이를 이용하는 다른 방법은 std::tr1::array 를 중첩해서 사용 하는 방법이 있는데, 이것을 좀 더 편하게 확장했다고 보면 되겠다.

std::tr::array에 관한 내용은 아래 링크를 참조해라
http://lunapiece.net/Article/476


아래는 multi_array와 중첩된 array에 관한 예제코드이다. 이것도 별 내용이 없다보니 그냥 코드 보여주는걸로 끝낸다.

#include <array>
#include <multi_array.hpp>
#include <cstdio>

using namespace boost;

int _tmain(int argc, _TCHAR* argv[])
{
    //TR1의 Array를 이용한 Static Array of Array 구현
    printf("std::tr1::array<std::tr1::array<int,20>, 10>\n");
    std::tr1::array<std::tr1::array<int,20>, 10> Stdarr; //int[10][20] 선언
    //10*20인데 선언시에는 숫자가 반대로 씌여지므로 헤깔린다!
    for (int i = 0; i < 10; ++i)
    {
        for(int j = 0;j < 20; ++j)
        {
            Stdarr[i][j] = 1;
        }
    }

    //boost::multi_array
    printf("multi_array 사용\n");
    multi_array<int, 2> MultiArray(extents[10][20]); //int의 2차원 배열 [10][20]을 선언. 템플릿 인자가 Type 과 차원을 나타냄.
    for (int i = 0; i < 10 ; ++i)
    {
        for(int j = 0;j < 20; ++j)
        {
            MultiArray[i][j] = 2;
        }
    }
   
    printf("multi_array 의 range 조정 \n");
    //Pascal 처럼 배열의 인덱스를 변형 할 수 있는 기능을 제공한다.
    typedef multi_array<int, 2>::extent_range range; //이름이 너무 길어서 ㅡ.ㅡ
    multi_array<int, 2> MultiArray2(extents[range(1,4)][range(20,40)]);   
    //Pascal 과 비교하면 Array [1..4-1] of Array[20..40-1] of Integer 라고 할 수 있겠다.
    for (int i = 1; i < 4 ; ++i)
    {
        for(int j = 20;j < 40; ++j)
        {
            MultiArray2[i][j] = 2;
        }
    }
    return 0;
}

+ -

관련 글 리스트
195 [Boost 살펴보기] 4. multi_array Lyn 18123 2009/05/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.