2008.10.05 23:38

[TR1 살펴보기] 2. Array

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

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

  1. [개인자료] 윈도우 재설치 후 설치 하는 프로그램

    Date2010.01.03 ByLyn Views39059
    Read More
  2. Compare, Merge 툴 간의 비교. - 작성중

    Date2009.12.08 ByLyn Views40846
    Read More
  3. C++ new 연산자의 진실

    Date2009.08.19 ByLyn Views57909
    Read More
  4. [Boost 살펴보기] 8. Tokenizer

    Date2009.06.11 ByLyn Views42713
    Read More
  5. [Boost 살펴보기] 7. String Algorithm2

    Date2009.05.20 ByLyn Views42104
    Read More
  6. [Boost 살펴보기] 6. String Algorithm1

    Date2009.05.12 ByLyn Views41654
    Read More
  7. [Boost 살펴보기] 5. lexical_cast

    Date2009.05.12 ByLyn Views41399
    Read More
  8. [Boost 살펴보기] 4. multi_array

    Date2009.05.11 ByLyn Views36739
    Read More
  9. [Boost 살펴보기] 3. timer

    Date2009.05.11 ByLyn Views44209
    Read More
  10. [Boost 살펴보기] 2. any

    Date2009.05.11 ByLyn Views36716
    Read More
  11. [Boost 살펴보기] 1. pool

    Date2009.05.11 ByLyn Views37096
    Read More
  12. 프로그래밍 대회 알고리즘 파트 문제

    Date2008.11.22 ByLyn Views15485
    Read More
  13. 컨테이너가 파괴될 때 소유한 객체 자동으로 파괴하기

    Date2008.10.22 ByLyn Views36763
    Read More
  14. [TR1 살펴보기] 3. UnOrdered Containers

    Date2008.10.05 ByLyn Views35649
    Read More
  15. [TR1 살펴보기] 2. Array

    Date2008.10.05 ByLyn Views37570
    Read More
  16. [TR1 살펴보기] 1. Random

    Date2008.10.05 ByLyn Views38356
    Read More
  17. Delphi 2009 Generic 살펴보기

    Date2008.09.29 ByLyn Views38837
    Read More
Board Pagination Prev 1 ... 3 4 5 6 7 8 Next
/ 8