2008.10.05 23:38

[TR1 살펴보기] 2. Array

Lyn
조회 수 37738 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
예제코드

#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 등의 멤버함수를 제공하여, 초기화, 교체 등의 작업을 쉽게 할 수 있으며, 배열의 크기를 얻어 올 수도 있습니다.

배열에 비해 사용시의 오버헤드가 좀 있긴 하지만... 안정적인 프로그램의 메모리 관리를 위해서는 사용 해 볼만 합니다.
?

List of Articles
번호 제목 글쓴이 날짜 조회 수
158 Delphi 2009 Generic 살펴보기 1 Lyn 2008.09.29 38999
157 [TR1 살펴보기] 1. Random Lyn 2008.10.05 38495
» [TR1 살펴보기] 2. Array Lyn 2008.10.05 37738
155 [TR1 살펴보기] 3. UnOrdered Containers Lyn 2008.10.05 35782
154 컨테이너가 파괴될 때 소유한 객체 자동으로 파괴하기 Lyn 2008.10.22 36911
153 프로그래밍 대회 알고리즘 파트 문제 2 secret Lyn 2008.11.22 15485
152 [Boost 살펴보기] 1. pool file Lyn 2009.05.11 37259
151 [Boost 살펴보기] 2. any Lyn 2009.05.11 36891
150 [Boost 살펴보기] 3. timer Lyn 2009.05.11 44372
149 [Boost 살펴보기] 4. multi_array Lyn 2009.05.11 36887
148 [Boost 살펴보기] 5. lexical_cast file Lyn 2009.05.12 41544
147 [Boost 살펴보기] 6. String Algorithm1 Lyn 2009.05.12 41829
146 [Boost 살펴보기] 7. String Algorithm2 Lyn 2009.05.20 42269
145 [Boost 살펴보기] 8. Tokenizer file Lyn 2009.06.11 43016
144 C++ new 연산자의 진실 2 file Lyn 2009.08.19 58203
143 Compare, Merge 툴 간의 비교. - 작성중 1 Lyn 2009.12.08 41013
142 [개인자료] 윈도우 재설치 후 설치 하는 프로그램 Lyn 2010.01.03 39222
141 [잡설]델파이 / C++ Builder 하는 사람들의 문제점. Lyn 2010.02.07 39808
140 [잡설] 앱스토어의 유행. 프로그래머에겐 과연? Lyn 2010.02.19 34488
139 Boost 에서 자기 자신의 shared_ptr 리턴하기 file Lyn 2010.03.02 38019
Board Pagination Prev 1 2 3 4 5 6 7 ... 8 Next
/ 8