예제코드

#include <iostream>
#include <array>

using namespace std;
using namespace std::tr1;

void main()
{
    array<int, 100> intarr;

    //초기화
    intarr.assign(0);  //모든 요소를 0으로 초기화한다
    for (int i = 0; i < 100; ++i)
    {
        cout << intarr[i] << " ";
    }
    //값을 대입해본다
    for (int i = 0; i < 100; ++i)
    {
        intarr[i] = i;
    }

    cout << endl << "Size : " << intarr.size() << endl;

    cout << "이터레이터를 사용한 루프" << endl;
    array<int, 100>::iterator ia;
    for (ia = intarr.begin() ; ia != intarr.end(); ++ia)
    {
        //이터레이터를 사용한 루프
        cout << *ia << " ";
    }
    cout << endl << "일반 배열처럼 접근하는 루프" << endl;
    for (int i = 0; i < 100; ++i)
    {
        cout << intarr[i] << " ";
    }

    //만약 범위를 벗어난다면 std::range_error 예외를 생성한다
//    intarr[100] = 1;
    system("pause");
}

TR1에서 추가된 array는 크기가 고정된 배열입니다.
즉 위에서의 array<int, 100> intarr 은 int intarr[100] 과 본질적으론 차이가 없습니다.

단지 관리를 편리하게 하기 위해 객체로 제공된다는것(C#, Java 와 같다고 보심 편합니다) 그리고 범위를 넘어설 시 예외를 발생한다는점이 특징입니다. (C의 배열은 범위를 넘어서도 치명적인 부분에 접근하기전까지는 오류발생을 모르는 경우도 있고.. 이경우 오류의 추적이 매우 어렵습니다)

C++ 표준 라이브러리의 일부가 될 TR1이므로 STL에서 사용하는 이터레이터 문법을 그대로 사용 할 수 있으며,
일반 배열과 본질적으로 같으므로 [] 연산자로 값을 읽고 쓸 수도 있습니다.

또한 swap, assign, size 등의 멤버함수를 제공하여, 초기화, 교체 등의 작업을 쉽게 할 수 있으며, 배열의 크기를 얻어 올 수도 있습니다.

배열에 비해 사용시의 오버헤드가 좀 있긴 하지만... 안정적인 프로그램의 메모리 관리를 위해서는 사용 해 볼만 합니다.
조회 수 :
14256
등록일 :
2008.10.05
14:38:21 (*.186.67.74)
엮인글 :
http://www.lunapiece.net/476/92a/trackback
게시글 주소 :
http://www.lunapiece.net/476
문서 첨부 제한 : 0Byte/ 10.00MB
파일 제한 크기 : 10.00MB (허용한 확장자만 첨부할 수 있습니다.(관리자는 제외) : *.*)
옵션 :
:
:
:
:
List of Articles
번호 제목 글쓴이 날짜 조회 수
13 [Boost 살펴보기] 7. String Algorithm2 Lyn 2009-05-20 14375
12 [Boost 살펴보기] 6. String Algorithm1 Lyn 2009-05-12 15375
11 [Boost 살펴보기] 5. lexical_cast file Lyn 2009-05-12 15661
10 [Boost 살펴보기] 4. multi_array Lyn 2009-05-11 14897
9 [Boost 살펴보기] 3. timer Lyn 2009-05-11 14906
8 [Boost 살펴보기] 2. any Lyn 2009-05-11 13845
7 [Boost 살펴보기] 1. pool file Lyn 2009-05-11 14455
6 프로그래밍 대회 알고리즘 파트 문제 [2] secret Lyn 2008-11-21 15485
5 컨테이너가 파괴될 때 소유한 객체 자동으로 파괴하기 Lyn 2008-10-22 13210
4 [TR1 살펴보기] 3. UnOrdered Containers Lyn 2008-10-05 14319
» [TR1 살펴보기] 2. Array Lyn 2008-10-05 14256
2 [TR1 살펴보기] 1. Random Lyn 2008-10-05 14697
1 Delphi 2009 Generic 살펴보기 [1] Lyn 2008-09-29 12696

SITE LOGIN :)