반응형
//**************************************************************** // array class 2단계 !! //**************************************************************** // 동적 배열 클래스 !! //**************************************************************** #includeusing namespace std; #define DEFAULT_SIZE 16 class Array { private: int * m_buf; // 동적배열 포인터 !! int m_size; // 현재 데이타의 갯수 !! int m_capacity; // 전체 용량 public : Array() //기본 생성자 !! { m_buf = new int[DEFAULT_SIZE]; memset( m_buf, 0, DEFAULT_SIZE ); m_size = 0; m_capacity = DEFAULT_SIZE; } Array( int capa) { m_buf = new int[capa]; memset( m_buf, 0, capa ); m_size = 0; m_capacity = capa; } // 1) 인덱스 기능 !!! int operator[] (int index) { return m_buf[index]; } //1) 리사이즈 : 배열의 크기를 변경 !! void Resize( int newCapa) { m_capacity = newCapa; int * temp = new int[m_capacity]; memcpy( temp, m_buf, sizeof(int) * m_size ); delete [] m_buf; m_buf = temp; } // 2) 자동 증가 !! --> 배열에 값이 인서트가 되면 !! void push_back( int data ) //배열에 마지막에 값을 하나 삽입 !! { if( m_size == m_capacity) Resize( m_capacity *2 ); // _msize: heap에 할당된 메모리의 크기 !! m_buf[m_size] = data; m_size++; } void pop_back() //배열의 맨뒤에서 1개 삭제 !! -->0으로 초기화 !! { m_buf[m_size] = 0; m_size--; } //************************************************************************* // 1) 삽입 // - insert ( int index , int value ) // 1개 // - insert ( int index, int value[] ); // 여러개의 값을 넣어라 !! // 2) 삭제 // erase (int index): index한개 지워라 !! // erase ( int value) // 배열안에서 value값을 처음에 있는 한개를 지워라 !! // clear() : 초기화 !! // 3) 유틸리티 // - reverse : 뒤집어라 --> 10 , 20, 30, --> 30, 20, 10 //************************************************************************* int getSize(){ return m_size; } int getCapacity(){return this->m_capacity; } ~Array() { //메모리 해제 !! delete [] m_buf; } // 객체 출력자 !! }; ostream & operator<<( ostream & os , Array & ar) { for(int i = 0; i< ar.getSize(); i++) os << "[ " << ar[i] << " ]"; os << endl; return os; } void main() { Array arr(2); arr.push_back(10); arr.push_back(20); cout << arr.getCapacity() << endl; arr.push_back(30); cout << arr.getCapacity() << endl; cout << arr; arr.pop_back(); cout << arr; arr.pop_back(); cout << arr; }
'C, C++' 카테고리의 다른 글
[C++] 템플릿 (0) | 2014.11.18 |
---|---|
[C++] String class (0) | 2014.11.18 |
[C++] () 연산자 오버로딩 !! (0) | 2014.11.18 |
[C++] 전역 함수를 이용한 연산자 오버로딩 (0) | 2014.11.18 |
[C++] 연산자 오버로딩 (0) | 2014.11.18 |