std::tr1::array - 고정 배열
프로그램 중에서 가장 많이 사용하고 있는 것이 배열입니다. 언제나 사용하고 있는 배열 int data[5] 와 같은 것들을 클래스로 제공하는 것입니다.
배열을 사용한 간단한 샘플
#include
<iostream>
#include
<algorithm>
#include
<iterator>
using namespace std;
int main()
{
const size_t N = 5;
int arr[N] = {1,2,3,4,5};
// 배열의 요소를 출력 한다
copy(arr, arr+N, ostream_iterator< int >(cout, " " ));
cout << endl;
}
배열에 대해 표준 C++의 <algorithm>을 적용할 때 적용 범위 즉 반복자의 묶음으로서 배열의 선두와 말미를 이 예에서는 arr 와 arr+N 을 줍니다.
표준 C++ 라이브러리의 컨테이너 std::vector 라면…
vector< int > ivec;
…// 배열의 요소를 출력 한다
copy(ivec.begin(), ivec.end(), ostream_iterator< int >(cout, " " ));
와 같이 반복자를 돌려주는 멤버 begin() /end()를 사용할 수 있습니다. 고정 배열 array는 표준 C++ 라이브러리의 컨테이너와
같은 멤버를 가지면서 그 실체는 빌트인 배열이라고 하는 품격이 틀린 클래스입니다.
array 라면...
#include <iostream>
#include
<algorithm>
#include
<iterator>
#include < boost/tr1/array.hpp > // std::tr1::array
using namespace std;
int main() {
// template인수에는 요소의 형태와 요소 수를 지정한다
tr1:: array< int ,5> arr =
{{ 1,2,3,4,5}}; // {{ 와 }} 로 둘러쌀 것
copy(arr.begin(), arr.end(), ostream_iterator< int >(cout, " " ));
}
std::tr1::array 의 template인수 T, N에는 각각 요소의 형태와 요소 수를 지정합니다. 각 요소의 초기화가 필요하면 요소 줄을 {{ 와 }} 로둘러싸 주세요.
std::tr1::array 의 주요한 멤버들을 아래에 나타냅니다.
size()
요소 수 N을 돌려줍니다.
operator[](n) , at(n)
n번째의 요소. at(n) 은
범위 외( n >= N ) 때
std::range_error 예외를 throw합니다.
front() , back()
각각 선두 요소/말미 요소를 돌려줍니다.
begin() , end()
각각 선두/말미의 반복자를 돌려줍니다.
rbegin() , rend()
각각 선두/말미의 역순 반복자를 돌려줍니다. 역순으로
출력
tr1::array< int ,5> arr = {{1,2,3,4,5}};
copy(arr. rbegin() , arr. rend() , ostream_iterator< int >(cout, "
" ));
swap(other)
array other 와의 사이에 각 요소를 교환합니다. X 와 y를 통째로 교환
tr1::array< int ,5> x;
tr1::array< int ,5> y;x.swap(y) ;
assign(value)
전 요소에 value 를 대입합니다. 모든 요소를 -1 로 초기화
tr1::array< int ,5> x;x.assign(-1) ;
== , !=,
<= , >, >=
두 array 를
비교합니다. 대소 관계는 사전순서(lexicographical)에
근거합니다.
|
댓글