피씨컴의 기울어진 공관

'스터디'에 해당되는 글 10건

  1. 2013.06.25 디자인 패턴 1일차
  2. 2013.06.25 인벤토리 알고리즘 프로세싱
  3. 2013.06.20 STL 기초 3일
  4. 2013.06.19 STL 2일차
  5. 2013.06.18 STL 기초 1일차
  6. 2013.06.07 디자인 패턴 종류
  7. 2013.04.01 STL
  8. 2013.03.19 3. 클래스 생성자와 파괴자
  9. 2013.03.19 2.인라인 메서드 & cerr
  10. 2013.03.14 1.클래스 정리

● 디자인 패턴 1일차

 

- GOF : 디자인 패턴 창시한 스터디 그룹

 

디자인 패턴은 실전의 경험등을 이론으로 승격화시킴 그래서 실용성이 높음

실전 -> 이론

 

디자인 패턴은 유지보수에 좋음

설계에 비용을 투자하여 유지보수의 비용을 대폭 줄임

 

디자인 패턴의 3종류 (더있음)

 

1. 생성 : 단일체(싱글턴), 팩토리

2. 행동 : 상태패턴, 전략패턴<- 현업뛰기전에 공부하면 좋음

3. 구조 : 퍼사드

 

 

디자인 패턴을 왜? 쓰나?

- 하나의 객체만 쓰기 위해

(전역이라는 상태를 추구해야함)

어디에 쓰나?

- 관리자, 매니저 급

 

뭐에 좋나?

- 객체가 더 필요해 졌을때 (싱글톤이 더이상 아니어야 할때) 그에 필요한 자기변화(구조변화)에 유연함

- 유일한 접근점에 브레이크 걸면 에러 났을때 좀더 편한 디버깅을 할수 있다.

 

'스터디 > 활동' 카테고리의 다른 글

인벤토리 알고리즘 프로세싱  (0) 2013.06.25
STL 기초 3일  (0) 2013.06.20
STL 2일차  (0) 2013.06.19
STL 기초 1일차  (0) 2013.06.18
디자인 패턴 종류  (0) 2013.06.07
Posted by 피씨컴

 

 

 

 

 

 

인벤토리에 좋은 구조

 

DB :  STL (MAP)

인벤토리 : STL(VECTOR)

 

 

 

 

 

 

 

'스터디 > 활동' 카테고리의 다른 글

디자인 패턴 1일차  (0) 2013.06.25
STL 기초 3일  (0) 2013.06.20
STL 2일차  (0) 2013.06.19
STL 기초 1일차  (0) 2013.06.18
디자인 패턴 종류  (0) 2013.06.07
Posted by 피씨컴

STL 기초 3일

스터디/활동 2013. 6. 20. 11:47

● MAP

- 검색이 빠름

 

↑ 시간 복잡도임

- 삽입 / 삭제 / 검색 로 구성

- 삽입이 3가지 방법이나 있음

1. 배열 인덱스로 삽입 = [] ex) A[key] = data  // 키 값이 잘못되도 무조건 삽입 키 중복이 없을때 삽입 없으면 수정

    // 이런 특성때문에 편리하지만 위험하여 그다지 추천하지 않음

 

2. pair 구조체 = pari < key, data> a.insert(pari) // 동일한 키값이 있음 삽입 안됨 수정도 안됨 아무것도 안함

// 그래서 안전성 좋음

3. A.insert(std::makepair(key,data); // 특징이 2번과 같음

 

- 삭제도 3가지 방법이나 이씅ㅁ

1. erase 함수를 통한 삭제

2. 반복자를 통한 삭제.

 

- 검색

- 해당 키 값의 반복자를 리턴

- 못찾으면 end()를 반환

 

 

● Multy Map

- 키 값 중복일때 써야함 (랭킹?)

- 중복키값에 의한 정렬을 할때 씀

- 검색에 쓰이지는 않음 검색하면 처음것만 반환 그래서 검색의 이점이 죽어버림

 

 

Unic -> 중복된 키값을 가진놈을 모두 날림 (기술커맨드 시스템 만들때 좋음

 

중복키값이기에 [ ] 이게 없음 그래서 삽입도 없음

 

 

 

● Set 잘안씀 꺼져

 

● bitset

- 데이터를 담는게 아님 참과 거짓만 담음

- 속도가 빠름

- 용량이 엄청나게 절약된다.

- bool과는 8배 이상 차이난다.

- tolong, tostring 으로 비트 내부를 확인 ex) tolong 비트를 long으로 변환해서 반환

 

 

● String

- find_of  : 내가 정한 문자 앞에서부터 찾아 넘겨줌

- find_last_of : 내가 정한 문자 뒤에서 부터 찾아 넘겨줌 못찾으면 -1값 나옴

- substr : 내가 해당 문자열에서 어디부터 짤라서 넘겨줌

'스터디 > 활동' 카테고리의 다른 글

디자인 패턴 1일차  (0) 2013.06.25
인벤토리 알고리즘 프로세싱  (0) 2013.06.25
STL 2일차  (0) 2013.06.19
STL 기초 1일차  (0) 2013.06.18
디자인 패턴 종류  (0) 2013.06.07
Posted by 피씨컴

STL 2일차

스터디/활동 2013. 6. 19. 09:20

● Vector , List

 

- 공통사항

begin() : 맨처음 원소를 가르키는 반복자

end : 맨마지막 원소의 다음위치 반복자

empty : 원소가 비었느냐?

size : 원소의 갯수 (Vec[5]같은 놈을 Vec.Size와 같이 사용 가능)

erase : 원소 제거 (반복자를 넣으면 그 해당 반복자를 제거)

 

 

● Vector 만의 특징

 

[] , at :임의 위치 지정

Push_back : 맨뒤 삽입 (이거밖에 없는 이유는 중간삽입은 부하가 심해서 뺀거임 반복자의 Insert를 쓰면 된다고도함)

pop_back

 

resize  : 공간과 원소를 확보(원소, 크기)

reserve : 공간만 확보( 크기)

※ resize reserve 모두 공간의 1.5배 확보한다.  10입력 11원소 15공간

 

Ex) Vector는 1.5배씩 늘어난다.

0 0

1 1

2 2

3 3

4 4

5 6

6 6

7 9

 

● List 만의 특징

push_front

pop_front

back : 맨뒤 원소

front

reverse : 앞뒤를 바꿈

Sort : 리스트 자료구조의 자료 단위는 노드라 뒤집어 봤자 제대로 적용이 안됨 그래서 전용 소트 함수가 따로 있는것

              구조상 일반 소트 알고리즘을 쓸수가 없어서 따로 지원

 

 

● 반복자 무효화 : 포인트는 아니지만 포인트역활을 해왔던 반복자가 그 역활을 못하는 상황

( 추가, 삭제에서 모두 발생하지만 평균적으로 삭제에서 더 많이 발생)

 

보통 원소의 처음부터 끝까지 한번에 지울때 많이 발생

 

Iter=vec.begin()

for(iter!=vec.end();iter++)

{

delete * iter;

iter = vec.erase(iter)    // 이부분 중요 이놈이 반복자를 지우고 다음놈을 리턴해주기 때문에 다음에 계속 이어할수 있음

}

 

 

● 벡터 좀 쉽게 쓰는법

std::vector < 자료형 변수명 >

:: iterator

 

이렇게 쓰면 졸 귀찮으니까

 

typedef     score_list     std::vector<tagscore>

 

요래 해두면 다음부턴 score_list만쓰면 만사오케이 ㅇㅇㅇㅇㅇㅇ

 

 

'스터디 > 활동' 카테고리의 다른 글

인벤토리 알고리즘 프로세싱  (0) 2013.06.25
STL 기초 3일  (0) 2013.06.20
STL 기초 1일차  (0) 2013.06.18
디자인 패턴 종류  (0) 2013.06.07
3. 클래스 생성자와 파괴자  (0) 2013.03.19
Posted by 피씨컴

● STL(표준 템플릿 라이브러리)

 

라이브러리 : 어떤 데이터나 기능의 집합

 

 

1. 컨테이너 (그릇, 용기) : 자료구조 (스텍, 큐, 리스트) 자료들을 담는다.

2. 반복자 (컨테이너랑 세트) : 컨테이너의 각각의 원소의 포인터 역활을 하는 클래스

* . -> 전부 연산자 오버로딩을 해놈  // 포인터가 아닌데 원소의 포인터 역활을 함 그래서 반복자 무효화 연상이 발생할 수 있음

 

3. 알고리즘 - 어떤 문제를 해결하기위한 어떤 기능들을 하기위한 템플릿 모음

템플릿으로 되어 있어서 속도가 조금 빠르다(눈꼼만큼)

내부에서 에러가나면 참조하기 힘들다.

그냥 잘 안씀

 

4. 함수자 : 함수 / 클래스의 오퍼레이터를 가지고 함수처럼 쓰는거

일반함수는 전역화 하지만 이건 클래스 내부이기에 지역화가 가능 (모듈화를 시킨다는 이점)

메트리가 별로 없어서 그냥 함수 쓰고 맘 그래서 잘 안쓰나 스터지 주제로는 좋음

 

 

● 컨테이너의 종류

 

1. 시컨스 컨테이너 (순차) : 넣는식이 순차적으로 들어간다(위치, 시간에 연관이 없다)

     - Vector, list가 있음

 

 

2. 정렬 컨테이너

- map, set, Mmap, Mset 이 있음

-map : 자동정렬 (오름?내림차순? 설정가능) Key와 data의 페이단위(키는 문자, 정수, 가능 대소비교가 가능하다면 클래스도 가능)

(바이너리 트리 / 검색트리 / BST트리 : 끝에서 없음 없다 ) 검색에 특화 , 삽입삭제 빠름

- set : 키 자체가 데이터 (키값 중복은 mset이 가능)

 

임의 접근을 하고 유리한건 Vector와 []

 

3. 컨테이너 어뎁터 (스텍, 큐) : 자료를 넣는것보다 넣었다 빼는 것이 목적 (순회)

 

 

bitset 과 string은 반복자가 없음

bitset은 원소값이 1 비트인 것

 

 

 

● A++과 ++A 차이

 

- a++

1. 값을 더한다

2. 임시값을 만든다

3. 값을 반환

- ++a

1.값을 더한다

2.자기자신(값)을 반환한다

 

그래서 ++a가 더 빠르다.

 

 

● 반복자는 +정수 연산으로 노드이동 가능

 

맨처음 주소가

iter : 시작

end : 끝의 다음 원소가 나옴

for문을 쓰려면 i<end 처럼 쓰면 안됨  i !=end 가 되어야함

 

 

 

http://www.cplusplus.com/reference/vector/vector/

'스터디 > 활동' 카테고리의 다른 글

STL 기초 3일  (0) 2013.06.20
STL 2일차  (0) 2013.06.19
디자인 패턴 종류  (0) 2013.06.07
3. 클래스 생성자와 파괴자  (0) 2013.03.19
2.인라인 메서드 & cerr  (0) 2013.03.19
Posted by 피씨컴

턴 공부 하기 전에 알아야 하는 개념들


[1] 패턴의 분류

  1. 목적(purpose)에 따른 구분: 디자인 패턴은 목적에 따라서 '생성패턴', '구조패턴', 

   '행동패턴'으로 나눌 수 있다.

  1) 생성패턴(creation pattern): 객체의 생성과정에 관여하는 패턴

 

 

 

 

2) 구조 패턴(structral pattern): 클래스나 객체의 합성에 관한 패턴

 

 

 

 

3) 행동 패턴(behavioral pattern): 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 

     방법을 정의하는 패턴

 

 

 

 

 

- 위의 3개가 소프트웨어 패턴 책들에 나오는 디자인 패턴의 리스트 들이다 '초록색'으로 적힌

  패턴들은 gof 디자인 패턴에 나오는 패턴들이고 '주황색' 으로 적혀 있는 패턴들이 그 이외의
  책들에서 나오는 패턴들이다.

 

 

 

 

출처 : http://tadis.tistory.com

'스터디 > 활동' 카테고리의 다른 글

STL 2일차  (0) 2013.06.19
STL 기초 1일차  (0) 2013.06.18
3. 클래스 생성자와 파괴자  (0) 2013.03.19
2.인라인 메서드 & cerr  (0) 2013.03.19
1.클래스 정리  (0) 2013.03.14
Posted by 피씨컴

STL

스터디/결과물 2013. 4. 1. 01:22

 

● STL

OOP이후의 또다른 시도인 STL은 일반화 프로그래밍 기법이라는 좀 더 발전된 개념의 재사용성을 제공한다. 일반화(Generic)는 객체 지향의 다음 세대라고 일컬어지는데 두 가지 측면에서 일반성을 제공한다.

 

 임의 타입에 사용할 수 있는 자료 구조를 만들 수 있다. 정수, 실수 등의 기본 타입은 물론이고 사용자 정의형 타입과 그 유도형까지도 관리할 수      있는 자료 구조를 정의할 수 있다. 자료 구조의 일반성을 구현하기 위해 인수로 전달된 타입으로 클래스를 정의하는 C++의 템플릿 문법이 사용

된다.

 

②  자료 구조의 형태나 내부 구조에 상관없이 임의의 데이터 집합에 적용할 수 있는 일반화된 알고리즘을 제공한다. 자료 구조에 상관없이 사용 방법

      이 동일하므로 어떠한 형태의 데이터에 대해서도 적용할 수 있다. 논리적으로 비슷한 작업은 같은 방법으로 수행할 수 있으며 이를 위해 반복자라

      는 일반화된 포인터를 사용한다.

 

이런 일반화의 개념에 의해 자주 사용되는 자료 구조와 알고리즘을 제공하는 라이브러리가 바로 STL이다. 개발자는 자료 구조를 일일이 구현할 필요없이 STL이 제공하는 자료 구조를 선택해서 사용할 수 있으며 하나의 알고리즘을 임의의 자료 구조에 대해 일관되게 사용할 수 있다. 최소한의 의사표현만으로 모든 처리가 자동으로 수행된다.

 

 

 

순차 컨테이너 (Sequence Container)

  • vector :  벡터 (Vector)
  • deque :  데크 (double ended queue)
  • ist : 리스트 (List)

 

컨테이너 어댑터 (Container Adaptor) 

  • stack : LIFO (Last in First out) 스택
  • queue : FIFO (First in First out) 큐
  • priority_queue : 우선순위 큐 (Priority queue)

연관 컨테이너

  • set : Set
  • multiset : 여러 키를 가지는 set
  • map : Map
  • multimap : 여러 키를 가지는 map
  • bitset :  Bitset

 

 

 

 

deque   (양방향 큐) 컨테이너 :

- by msdn kor    

컨테이너의 시작과 끝에 빠른삽입과 삭제가 가능합니다. 또한 임의로 요소를 신속하게 액세스할 수 있습니다.

- by soenlab    

양쪽 끝이 있는 큐이며 양 끝에서 자료를 삽입, 삭제할 수 있다. 컴파일러에 따라 데크의 구현 방식이 다르겠지만 주로 메모리 블록을 할당하여 연결해 놓고 양쪽 끝으로 추가 할당해 나가는 방식으로 구현된다.

- by etc

양쪽에서 끝나는 큐 (Double ended queue) 로 <deque> 에 정의되어 있다.

 

template < class T, class Allocator = allocator<T> > class deque;
  • T : (보관하려는) 원소의 타입
  • Allocator : 어떠한 방식으로 메모리를 할당할지에 관련한 할당자(allocator) 타입을 나타낸다. 기본값으로 T 의 할당자 클래스 템플릿을 사용하며, Heap 에 할당하게 된다. 많은 경우 인자를 생략한다.


- 맴버함수  

  • 생성자 : 데크를 생성한다.
  • 소멸자 : 데크를 소멸한다. 
  • operator= : 데크의 내용을 복사한다.


- 반복자

  • begin : 시작 부분 (첫번째 원소) 을 가리키는 반복자를 리턴한다.
  • end : 끝 부분 (마지막 원소 바로 다음) 을 가리키는 반복자를 리턴한다. 
  • rbegin : 역순으로 첫번째 (즉, 마지막 원소) 를 가리키는 반복자를 리턴한다. 
  • rend : 역순으로 끝 부분 (즉, 첫번째 원소 바로 이전) 을 가리키는 반복자를 리턴한다.

- 할당 관련 (벡터와는 다르게 capacity 와 reserve 가 없다! )

  • size : 데크의 size 를 리턴한다 (현재 원소의 개수)
  • max_size : 데크 최대 크기를 리턴한다.
  • resize : 데크가 size 개의 원소를 포함하도록 변경한다.
  • empty : 데크가 비었는지 체크한다.

- 임의 접근

  • operator[] : 원소에 접근한다.
  • at : 원소에 접근한다. 
  • front : 첫번째 원소에 접근한다.
  • back : 마지막 원소에 접근한다.

- 수정자 (Modifier)

  • assign : 데크에 원소를 집어넣는다. 
  • push_back : 데크 끝에 원소를 집어 넣는다.
  • push_front : 데크 맨 앞에 원소를 집어 넣는다.
  • pop_back : 마지막 원소를 제거한다.
  • pop_front : 첫번째 원소를 제거한다.
  • insert : 데크 중간에 원소를 추가한다. 
  • erase : 원소를 제거한다.
  • swap : 다른 데크와 원소를 바꿔치기 한다.
  • clear : 원소를 모두 제거한다.

- 할당자

  • get_allocator : 할당자(allocator) 을 얻는다.


 

- 맴버변수

  • reference : Allocator::reference
  • const_reference :  Allocator::const_reference
  • iterator :  임의 접근 반복자(random access iterator)
  • const_iterator : 상수 임의 접근 반복자 (즉, 접근하는 원소의 내용을 수정 못함)
  • size_type : 데크 size 를 나타내는 타입 (많은 경우 size_t 와 타입이 같으며 부호없는 정수이다)
  • difference_type : 데크 내의 두 원소 사이의 거리를 나타내는 타입 (많은 경우 ptfdiff_t 와 타입이 같으며 부호있는 정수)
  • value_type : 원소 타입 (T)
  • allocator_type : 할당자
  • pointer : 포인터 (Allocator::pointer)
  • const_pointer : 상수 포인터 (Allocator::const_pointer)
  • reverse_iterator :  역 반복자 (끝에서 부터 참조해나간다) reverse_iterator<iterator>
  • const_reverse_iterator :  상수 역 반복자 (reverse_iterator<const_iterator>)


 

 

 

 

 

list 컨테이너 :  

- by msdn kor  

컨테이너의 모든 위치에 빠른 삽입과 삭제를 할수 있지만 컨테이너 요소를 임의로 액세스할 수 없습니다.

- by soenlab  

리스트는 이중 연결 리스트로 구현된 컨테이너이다. 리스트의 요소들은 노드라는 구조체로 관리되며 노드끼리는 링크로 서로 연결되어 있어 요소의 논리적인 순서를 기억한다. 노드는 링크에 의해 연결될 뿐이므로 인접한 메모리에 배치되지 않아도 상관없으며 삽입, 삭제할 때도 앞뒤 노드의 링크만 조작하므로 대용량의 메모리를 밀고 당길 필요가 없다. 그래서 삽입, 삭제 속도가 대단히 빠르다. 반면 리스트의 한 요소를 찾으려면 첫 노드부터 순서대로 링크를 따라 이동해야 하므로 읽기 속도는 무척 느리다.

 

- by etc

리스트(list) 는 헤더파일 <list> 에 정의된 순차 컨테이너의 한 종류로 원소들은 메모리 상에 선형으로 배열된다.


 

template < class T, class Allocator = allocator<T> > class list;
  • T : (보관하려는) 원소의 타입
  • Allocator : 어떠한 방식으로 메모리를 할당할지에 관련한 할당자(allocator) 타입을 나타낸다. 기본값으로 T 의 할당자 클래스 템플릿을 사용하며, Heap 에 할당하게 된다. 많은 경우 인자를 생략한다.

- 맴버함수

  • 생성자 : 리스트를 생성한다.
  • 소멸자 : 리스트를 소멸한다. 
  • operator= : 리스트의 내용을 복사한다.

- 반복자

  • begin : 시작 부분 (첫번째 원소) 을 가리키는 반복자를 리턴한다.
  • end : 끝 부분 (마지막 원소 바로 다음) 을 가리키는 반복자를 리턴한다. 
  • rbegin : 역순으로 첫번째 (즉, 마지막 원소) 를 가리키는 반복자를 리턴한다. 
  • rend : 역순으로 끝 부분 (즉, 첫번째 원소 바로 이전) 을 가리키는 반복자를 리턴한다.


- 할당관련(백터와는 다르게 capacity와 reserve가 없다.)

  • size : 리스트의 size 를 리턴한다 (현재 원소의 개수)
  • max_size : 리스트 최대 크기를 리턴한다.
  • resize : 리스트가 size 개의 원소를 포함하도록 변경한다.
  • empty : 리스트가 비었는지 체크한다.

- 임의접근
  • front : 첫번째 원소에 접근한다.
  • back : 마지막 원소에 접근한다


- 수정자 (Modifier)

  • assign : 리스트에 원소를 집어넣는다. 
  • push_back : 리스트 끝에 원소를 집어 넣는다.
  • push_front : 리스트 맨 앞에 원소를 집어 넣는다.
  • pop_back : 마지막 원소를 제거한다.
  • pop_front : 첫번째 원소를 제거한다.
  • insert : 리스트 중간에 원소를 추가한다. 
  • erase : 원소를 제거한다.
  • swap : 다른 리스트와 원소를 바꿔치기 한다.
  • clear : 원소를 모두 제거한다.
 


- 특별한 작업들 (Operations)

  • splice : 리스트와 리스트 사이에서 원소를 이동한다.
  • remove : 특정 값을 지닌 원소를 삭제한다.
  • remove_if : 특정 조건을 만족시 원소를 삭제한다.
  • unique : 중복된 값을 삭제한다.
  • merge : 정렬된 리스트를 합친다.
  • sort : 컨테이너의 원소를 정렬한다.
  • reverse : 원소들의 순서를 거꾸로 뒤집는다.
- 할당자
  • get_allocator : 할당자(allocator) 을 얻는다.

 

- 맴버 변수들
  • reference : Allocator::reference
  • const_reference :  Allocator::const_reference
  • iterator :  임의 접근 반복자(random access iterator)
  • const_iterator : 상수 임의 접근 반복자 (즉, 접근하는 원소의 내용을 수정 못함)
  • size_type : 리스트 size 를 나타내는 타입 (많은 경우 size_t 와 타입이 같으며 부호없는 정수이다)
  • difference_type : 리스트 내의 두 원소 사이의 거리를 나타내는 타입 (많은 경우 ptfdiff_t 와 타입이 같으며 부호있는 정수)
  • value_type : 원소 타입 (T)
  • allocator_type : 할당자
  • pointer : 포인터 (Allocator::pointer)
  • const_pointer : 상수 포인터 (Allocator::const_pointer)
  • reverse_iterator :  역 반복자 (끝에서 부터 참조해나간다) reverse_iterator<iterator>
  • const_reverse_iterator :  상수 역 반복자 (reverse_iterator<const_iterator>)


 

 

 

 

 

vector 컨테이너 :

- by msdn kor  

배열 처럼 동작 하며 자동으로 증가 합니다.

- by soenlab  

벡터는 쉽게 말해서 동적 배열이라고 생각하면 된다. 요소의 개수에 맞게 자동으로 메모리를 재할당하여 크기를 신축적으로 늘릴 수 있는 배열이다. 단순한 동적 배열에 비해 템플릿 기반이므로 요소의 타입에 무관한 배열을 만들 수 있다는 것이 큰 장점이다.

- by etc

 벡터(vector) 는 헤더파일 <vector> 에 정의되어 있는 는 순차 컨테이너의 한 종류로, 각각의 원소들이 선형으로 배열되어 있다.

 

template < class T, class Allocator = allocator<T> > class vector;
  • T : (보관하려는) 원소의 타입
  • Allocator : 어떠한 방식으로 메모리를 할당할지에 관련한 할당자(allocator) 타입을 나타낸다. 기본값으로 T 의 할당자 클래스 템플릿을 사용하며, Heap 에 할당하게 된다. 많은 경우 인자를 생략한다. 


- 맴버 변수들
  • 생성자 : 벡터를 생성한다.
  • 소멸자 : 벡터를 소멸한다. 
  • operator= : 벡터의 내용을 복사한다.


- 반복자
  • begin : 시작 부분 (벡터의 첫번째 원소) 을 가리키는 반복자를 리턴한다.
  • end : 끝 부분 (벡터의 마지막 원소 바로 다음) 을 가리키는 반복자를 리턴한다. 
  • rbegin : 역순으로 첫번째 (즉, 벡터의 마지막 원소) 를 가리키는 반복자를 리턴한다. 
  • rend : 역순으로 끝 부분 (즉, 벡터의 첫번째 원소 바로 이전) 을 가리키는 반복자를 리턴한다.
- 할당 관련
  • size : 벡터의 size 를 리턴한다 (현재 원소의 개수)
  • max_size : 벡터 최대 크기를 리턴한다.
  • resize : 벡터가 size 개의 원소를 포함하도록 변경한다.
  • capacity : 벡터에 할당된 전체 크기를 리턴한다. 
  • empty : 벡터가 비었는지 체크한다. 
  • reserve : 벡터에 할당된 크기를 변경한다.
- 원소 접근관련
  • operator[] : 원소에 접근한다.
  • at : 원소에 접근한다. 
  • front : 첫번째 원소에 접근한다.
  • back : 마지막 원소에 접근한다.
- 수정자 (Modifier)
  • assign : 벡터의 원소를 집어넣는다. 
  • push_back : 벡터 끝에 원소를 집어 넣는다.
  • pop_back : 마지막 원소를 제거한다. 
  • insert : 벡터 중간에 원소를 추가한다. 
  • erase : 원소를 제거한다.
  • swap : 다른 벡터와 원소를 바꿔치기 한다.
  • clear : 원소를 모두 제거한다.
- 할당자
  • get_allocator : 할당자(allocator) 을 얻는다.



 

- 맴버 변수들

  • reference : Allocator::reference
  • const_reference :  Allocator::const_reference
  • iterator :  임의 접근 반복자(random access iterator)
  • const_iterator : 상수 임의 접근 반복자 (즉, 접근하는 원소의 내용을 수정 못함)
  • size_type : 벡터 size 를 나타내는 타입 (많은 경우 size_t 와 타입이 같으며 부호없는 정수이다)
  • difference_type : 벡터 내의 두 원소 사이의 거리를 나타내는 타입 (많은 경우 ptfdiff_t 와 타입이 같으며 부호있는 정수)

  • value_type : 원소 타입 (T)
  • allocator_type : 할당자
  • pointer : 포인터 (Allocator::pointer)
  • const_pointer : 상수 포인터 (Allocator::const_pointer)
  • reverse_iterator :  역 반복자 (끝에서 부터 참조해나간다) reverse_iterator<iterator>
  • const_reverse_iterator :  상수 역 반복자 (reverse_iterator<const_iterator>)


 

- 탬플릿 특수화

벡터 템플릿 클래스는 특별히 bool 타입에 대한 템플릿 특수화(specialization)를 가지고 있다.

  bool 만 특별하게 특수화 시킨 이유는 메모리 공간을 최적화 하기 위해 bool 원소가 한 개의 비트만 사용하도록 설계하였기 때문이다. (C++ 에서 최소 자료형의 크기는 8 비트 이다 - 즉 실제 bool 객체는 8 비트를 차지한다. ) 따라서 bool 원소의 레퍼런스는 bool& 가 아니라, 아래와 같이 vector<bool> 에 특별히 정의되어 있는 멤버 변수를 통해 vector<bool> 의 단일 비트에 대한 조작을 수행할 수 있게 된다.


class vector<bool>::reference {
  friend class vector;
  reference();                                 // public 생성자가 아니다
public:
  ~reference();
  operator bool () const;                      // bool 로 캐스팅 한다.
  reference& operator= ( const bool x );       // bool 을 대입
  reference& operator= ( const reference& x );  // 비트로 대입
  void flip();                                 // 비트값 반전 (0 -> 1, 1 -> 0)
}



   이와 비슷한 컨테이너로 bitset 이 있다.


  1. 동적 배열 끝에 새로운 원소를 추가하는 경우를 생각해보자. 만일 이미 공간 자체가 할당되어 있으면 새로운 원소를 추가하는 일은 O(1) 일 것이다. 하지만, 공간이 할당되어 있지 않다면, 보통 2 배의 공간으로 다시 할당하게 되는데 이 때 시간이 O(n) 정도 들어가게 된다. 따라서 전체 평균적으로 볼 때 O(1) 정도의 상수 시간이 걸린다고 볼 수 있고 이러한 형태의 소요 시간을 constant amortized time 이라고 부른다.  

 

 

 

 

 

 

 

 

map컨테이너 :

      - by msdn kor  

저장 및 검색에 데이터 값 과 정렬키 모드를 포함하는 요소를 컬렉션에서 데이터로 사용합니다. 고유의 키값은 데이터를 정렬하는 데 사용됩니다.

맵에 있는 요소의 데이터는 직접 변경할 수 있지만 키 값은 상수이므로 변경할 수 없습니다. 대신 이전 요소와 연관된 키 값을 삭제 하고 새 요소에 대한 키 값을 삽입하면 가능합니다.

 

- by soenlab  

셋이 키의 집합만을 관리하는데 비해 맵은 키와 값의 쌍을 관리한다. 연관이 있는 두 개의 값을 쌍으로 관리한다는 점에서 진정한 연관 컨테이너라고 할 수 있다. 셋과 마찬가지로 정렬된 상태로 요소를 저장하므로 키값으로 빠르게 검색할 수 있다. 셋에 비해 값을 추가로 가진다는 차이점이 있는데 반대로 표현하면 셋은 값을 가지지 않는 맵이라고도 할 수 있다.

 

 

template <   class Key,    class Type,    class Traits = less<Key>,

class Allocator=allocator<pair <const Key, Type> > > class map

 

- 매개변수

  • Key :  맵에 저장 키 데이터 형식입니다.
  • Type : 맵에 저장 될 요소의 데이터 형식입니다.
  • Traits : 제공 하는 함수 개체의 형식 맵에서 상대적인 순서를 결정 하는 정렬 키로 두 개의 요소 값을 비교할 수 있습니다. 이 인수는 선택 사항입니다 및 이진 술 부 less<Key> 기본값입니다.
  • Allocator  : 맵의 할당 및 할당 취소에 대 한 세부 정보를 캡슐화 하는 저장 된 할당 개체를 나타내는 형식입니다.

- 생성자

일부 맵의 복사본이나 특정 크기의 요소를 특정 값 또는 특정 목록 생성

 

- 맴버들

  • allocator_type : 맵 개체에 형식에 대 한 정의 allocator.
  • const_iterator : 맵의 요소를에서 읽을 수 있는 양방향 반복기에 대한 형식 정의를 const
  • const_pointer : 맵의 요소 형식에 대한 포인터의 정의를 const.
  • const_reference : 맵의 읽기 및 수행 하는 저장 된 요소의 형식 정의에 대 한 const 작업.
  • const_reverse_iterator : 맵의 요소에서 양방향 반복기를 제공 하는 모든 형식을 const.
  • difference_type : 반복기가 가리키는 요소 사이의 범위에서 맵의 요소에 대한 typedef 부호 있는 정수입니다.
  • iterator(반복기) : 읽거나 맵의 모든 요소를 수정 하는 양방향 반복기에 대 한 형식 정의입니다.

  • key_compare : Typedef는 함수 개체 맵에서 두 요소의 상대적 순서를 결정 하는 두 개의 정렬 키를 비교할 수 있습니다.

  • key_type : 각 맵 요소에 저장 된 정렬 키에 대한 형식 정의입니다.

  • mapped_type : 각 맵 요소에 저장 된 데이터에 대한 형식 정의입니다.

  • pointer : 맵의 요소 형식에 대한 포인터에 대한 정의 const.

  • reference: Typedef는 맵에 저장 된 요소를 참조 합니다.

  • reverse_iterator : 읽거나 거꾸로 된 맵 요소를 수정할 수 있는 양방향 반복기에 대한 형식 정의입니다.

  • size_type : 맵 요소 수에 대한 부호 없는 정수 형식 정의

  • value_type : 맵 요소에 저장 된 개체의 형식에 대한 형식 정의입니다.

  •  

- 메서드

  • map::at : 지정 된 키 값을 가진 요소를 찾습니다.
  • begin : 구조에서 첫 번째 요소를 가리키는 반복기을 반환 합니다.
  • map::cbegin : Const 구조에서 첫 번째 요소를 가리키는 반복기를 반환 합니다.
  • map::cend : Const 끝 지난 반복기를 반환합니다.
  • clear : 맵의 모든 요소를 지웁니다.
  • count : 키 매개 변수에서 지정 된 키와 일치 하는 맵에 요소 개수를 반환 합니다.
  • map::crbegin : 상수 역방향 맵의 첫 번째 요소를 가리키는 반복기를 반환 합니다.
  • map::crend : 마지막 요소 뒤에 거꾸로 된 맵 위치를 가리키는 const 반복기를 반환 합니다.
  • map::emplace : 맵으로 위치에서 구성 요소를 삽입 합니다.
  • map::emplace_hint : 원위치에 배치 되는 힌트와 지도 생성 하는 요소를 삽입 합니다.
  • empty : 맵 비어 있는 경우 true 반환 .
  • end : 최종 이전 반복기를 반환합니다.
  • equal_range : 한 쌍의 반복기를 반환합니다. 첫 번째 쌍 포인트의 첫 번째 요소에 반복기는 map 지정 된 키 보다 큰 키. 두 번째 쌍 포인트의 첫 번째 요소에 반복기는 map 키 키 보다 크거나 같은 경우에.
  • erase : 지도에서 지정 된 위치에서 요소 또는 요소 범위를 제거합니다.
  • find : 요소의 지정 된 키의 값과 일치하는 맵의 위치를 가리키는 키 값을 반환 합니다.
  • get_allocator : 복사본을 반환 된 allocator 지도 생성 하는 데 사용 되는 개체입니다.
  • insert :요소 또는 요소의 범위 지도에서 지정 된 위치에 삽입합니다.

 

  • key_comp : 맵의 순서 키를 사용 하는 비교 개체의 복사본을 반환 합니다.
  • lower_bound : 지정 된 키 보다 크거나 같은 키 값이 맵의 첫 번째 요소를 반환 합니다.
  • max_size : 맵의 최대 길이 반환합니다.
  • rbegin : 반전 된 맵의 첫 번째 요소를 반환합니다.
  • rend : 마지막 요소 뒤에 거꾸로 된 맵 위치의 해당 포인트를 반환합니다.
  • size : 맵에서 요소 개수를 반환합니다.
  • swap : 두 맵의 요소를 교환합니다.
  • upper_bound : 맵에서 지정 된 키 보다 큰 키 값을 가진 첫 번째 요소에 반환 합니다.
    value_comp : 맵의 순서 대로 요소 값에 사용 되는 비교 개체의 복사본을 검색 합니다.

- 연산자

  • operator[] :지정 된 키 값을 사용 하 여 맵을에 요소를 삽입합니다.
  • map::operator= : 지도 요소의 다른 맵의 복사본으로 대체합니다.

 

 

 

 

 

● set 컨테이너 :

 

(Set)은 노드 구조체 기반으로 맵과 비슷하지만, 키(Key)만으로 관리한다.

 

> 키는 고유한  값으로써 정렬 및 검색의 기준으로 사용한다. 구조는 맵과 같은 이진 검색 트리이다.

  데이터를 정렬할 때, 많은 데이터에서 검색할 때, 키를 이용해 원하는 값을 빠르게 검색할 수 있다.

  단, 선형 검색 속도는 느리다.

 

 

 

 

 

- 맴버 변수들

생성자 : set을 생성한다.
소멸자 : set을 소멸한다.
operator= : 벡터의 내용을 복사한다.

 

- 반복자

begin : 시작 부분 (set의 첫번째 원소) 을 가리키는 반복자를 리턴한다.
end : 끝 부분 (set의 마지막 원소 바로 다음) 을 가리키는 반복자를 리턴한다.
rbegin : 역순으로 첫번째 (즉, set의 마지막 원소) 를 가리키는 반복자를 리턴한다.
rend : 역순으로 끝 부분 (즉, set의 첫번째 원소 바로 이전) 을 가리키는 반복자를 리턴한다.

 

- 할당 관련

empty : 컨테이너가 비어 있는지 여부를 테스트한다

size : 컨테이너의 사이즈를 리턴한다. (현제 원소의 갯수)

max_size : set의 최대 크기를 리턴한다

 

 

- 수정자 (Modifier)

insert : 원소를 추가한다.

erase : 원소를 제거한다.

swap : 원소를 바꿔치기 한다.

clear : 원소를 모두 제거한다.

 

- 옵저버(Observers)

key_comp : key의 비교객체를 반환

value_comp : value의 비교 객체를 반환

 

- 운영자 (Operations)

find : 찾는 원소의 반복자를 리턴한다 

count : 특정 값을 가진 원소의 갯수를 센다.

 

- 정렬된 범위에 대해 동등성을 사용하는 것들

lower_bound : 찾는 키를 가진 원소 중 중 첫번째 원소를 리턴한다.

upper_bound : 찾는 키를 가진 원소 중 마지막 요소의 다음을 리턴한다

equal_range  : 찾는 키를 가진 원소 중  반복자를 쌍으로 반환한다.제일 처음 찾은 위치를 first , 두번째를 second로 반환.

 

 


- 할당자
get_allocator : 할당자(allocator) 을 얻는다.

 

 

 

 

 

 

 

 

 

컨테이너에 포함된 대표적인 맴버 함수들

맴버 함수      설명                                              포함

empty

컨테이너가 비어 있는지 검사

모든 컨테이너

size

컨테이너에 포함된 요소 개수를 반환

clear

컨테이너의 모든 요소를 삭제

begin

컨테이너의 첫 번째 요소의 반복자 반환

end

컨테이너의 마지막 요소 다음 위치 반복자 반환

rbegin

컨테이너의 마지막에서, 첫 번째 요소의 반복자 반환

rend

컨테이너의 마지막에서, 마지막 요소 다음

위치 반복자 반환 rbegin과 같이 사용

push_back

요소 하나를 컨테이너의 마지막에 추가

순차 컨테이너

pop_back

컨테이너 마지막 요소 삭제

back

컨테이너의 마지막 요소 읽기

front

컨테이너의 첫번째 요소 읽기

push_front

요소 하나를 컨테이너의 첫 번째 요소로 추가

deque,list

pop_front

컨테이너의 첫 번째 요소를 삭제

insert

요소 하나 또는 여러 개의 요소를 컨테이너 추가

모든 컨테이너

erase

요소 하나 또는 여러 개의 요소를 컨테이너에 삭제

count

값이 일치하는 요소의 개수를 반환

연관 컨테이너

find

값이 일치하는 첫 번째 요소의 반복자 반환

lower_bound

값이 일치하는 여러 요소중 가장 앞쪽에 있는

반복자 반환

upper_bound

값이 일치하는 요소들중에 지난 첫 번째 위치 반환

end반복자와 같은 개념

equal_range

lower_bound upper_bound의 기능을 결합한 함수

 

 http://neodreamer.tistory.com/256

 

Posted by 피씨컴

C++가 내세우는 목표 중의 하나는, 클래스 객체를표준 데이터형을 사용하듯이 사용할 수 있게 만드는 것이다.

그러나 일반 변수나 struct를 초기화 하는 것처럼 class 객체를 초기화 할 수는 없다.

이와 같은 방법으로 class를 초기화 할 수 없는 이유는 데이터들이 private 접근 제어를 가지고 있어 프로그램이 데이터 맴버에 직접 접근할 수 없기 대문이다. 접근할 수 있는 유일한 방법은 맴버함수를 이용하는 것 (데이터 맴버들을 private 대신에 public으로 만들면 방금 살펴본 위와 같은 방법으로 데이터 맴버들을 초기화 할 수는 있으나 그것은 데이터 은닉이라는 클래스의 기본원칙을 위반하는 것이다.

 

 

● 생성자

모든 객체는 그것을 생성할때 초기화 하는 것이 바람직 하다 이를 위해서 c++은 새로운 개로운 객체를 생성하고 그들의 데이터 맴버에 값을 대입해 주는 클래스생성자 (class constructor)라는 특별한 맴버함수를 제공한다. 

 

1. 객체를 선언할 때 프로그램이 자동으로 생성자를 호출한다는 것이다.

2. 생성자의 이름과 사용방법은 C++이 제공하고 사용자는 클래스 생성자의 정의만 제공한다

3. 생성자의 이름은 클래스의 이름과 같다.

4. 생성자는 리턴값이 없는데도 불구하고 void형으로 선언하지 않는다.

5. 생성자에는 데이터형을 선언하지 않는다.

 

다음은 이해를 위한 생성자 정의

 

stock::stock(const char * co, int n, double pr)

{

strncpy(company,co,29);

company[29]='\0';

shares = n;

share_val = pr;

set_tot();

}

 

 

 

● 생성자 사용하기

- 생성자의 명시적 호출

stock food = stock("world cabbage",250,1.25);

- 생성자의 암시적 호출

stock garment("furry mason", 50,2.5);

 

- new를 사용할 때 생성자 사용

stock * pstock = new stock("aaa",18,19.0);

stock 객체를 생성하고 전달인자를 통해 제공되는 값으로 그것을 초기화 한다 그러고 나서, 그 객체의 주소를 pstock 포인터에 대입한다.

이 경우에는 객체가 이름을 가지고 있지 않다. 그러나 그 포인터를 사용하여 객체를 다룰 수 있다.

 

 

 

● 디폴트 생성자

디폴트 생성자(default constructor)는 명시적인 초기화 값을 제공하지 않을 때 객체를 생성하는 데 사용하는 생성자이다. 즉 다음과 같은 선언에 사용되는 생성자이다.

 

stock stock1;    // 디폴트 생성자를 사용한다.

 

이 명령문이 동작하는 이유는, 사용자가 생성자를 제공하지 않아도 C++(컴파일러)가 자동으로 디폴트 생성자를 제공하기 때문이다. 그것은 생성자의 디폴트 버전인데 아무런 일도 하지 않는다. 예를 들자면 다음과 같다고 보면 된다.

 

stock::stock() { }

 

사용자가 클래스의 어떤 생성자를 일단 정의한 후에는 그 클래스의 디폴트 생성자를 제공하는 책임이 컴파일러로부터 사용자에게 넘어온다 사용자가 디폴트가 아닌 stock(const char * co, int n, double pr) 같은 생성자를 제공하면서 디폴트 생성자를 제공하지 않으면 다음과 같은 선언은 에러가 된다.  에러가 발생하는 이유는 ,초기화되지 않은 객체의 생성을 사용자가 원하지 않을지도 모르기 때문이다.

 

 

● 디폴트 생성자 사용하기

- 디폴트 생성자를 암시적으로 호출

stock first;

- 디폴트 생성자를 명시적으로 호출

stock first = stock();

- 디폴트 생성자를 암시적으로 호출

stock *prelief = new stock;

 

● 디폴트 생성자 사용에 있어 주의점

stock first()

다음은 first()가 stock객체를 리턴하는 함수임을 나타내는 것이다. 디폴트 생성자를 암시적으로 호출할 때에는 괄호를 사용하면 안되다.

 

 

● 파괴자

객체의 수명이 끝나는 시점에서 프로그램은 파괴자(destructor)라는 무서운 별칭을 가진 특별한 맴버 함수를 자동으로 호출한다.

 

1. 생성자와 마찬가지로 파괴자도 리턴값을 가질수 없고 선언된 데이터형을 갖지 않는다.

2. 파괴자는 전달인자를 가지면 안 된다.

3. 일반적으로 사용자가 코드에 명시적으로 파괴자를 호출하면 안된다.

4. 정적 기억 공간의 클래스 객체를 생성한다면, 프로그램이 종료될 때 파괴자가 자동으로 호출된다.

5. 자동 기억공간의 클래스 객체를 생성한다면 그 객체가 정의된 코드 블록을 프로그램이 벗어날 때 파괴자가 자동으로 호출된다.

6. new를 사용하여 객체를 생성한다면 그 객체는 힙 메모리 또는 자유 기억공간에 저장되므로 그것의 메모리를 해제하기 위해 delete를 사용할 때 파

    괴자가 자동으로 호출된다.

7. 프로그램은 어떤 작업들을 수행하기 위해 임시적인 객체를 생성할 수 있다 그러한 경우에 프로그램은 그 객체의 사용을 마쳤을 때 파괴자를 자동

    호출한다.

 

 

- 파괴자의 원형

~stock();

 

stock::~stock()

{

 

}

 

 

 

 

 

'스터디 > 활동' 카테고리의 다른 글

STL 2일차  (0) 2013.06.19
STL 기초 1일차  (0) 2013.06.18
디자인 패턴 종류  (0) 2013.06.07
2.인라인 메서드 & cerr  (0) 2013.03.19
1.클래스 정리  (0) 2013.03.14
Posted by 피씨컴

c++ 기초플러스 4판

 

 

● cerr

cerr 객체는 cout 과 마찬가지로 ostream객체이다. 둘 사이의 차이점은 운영 체제 리디렉션이 cout에는 작용하지만 cerr에는 작용하지 않는다는 것이다. cerr 객체는 에러 메시지를 위해 사용된다. 그러므로 프로그램 출력을 파일로 리디렉션할 때 에러가 발생하면, 화면에 에러 메시지가 나타난다.

 

 

● 인라인 메서드

- 클래스 선언안에 정의를 가지고 있는 모든 함수는 자동으로 인라인 함수가 된다.

- 원한다면 클래스 선언의 외부에 맴버 함수를 정의하고 그것을 인라인 함수로 만들 수 있다.  그렇게

   하려면 클래스 세부 구현 부분에서 그 함수를 정의할 때 inline이라는 제한자를 붙이면 된다.

  

- 인라인 함수들은 그들이 사용되는 각각의 파일에서 정의될 것을 요구한다. 즉 해당 클래스가 정의되

   어 있는 헤더 파일에 인라인 정의를 함께 넣으라는 소리.

 

- 코드 수정 규칙(rewrite rule)에 따르면, 클래스 선언 안에 메서드를 정의하는 것은 그 메서드 정의를

  원형으로 대체하고, 클래스 선언 바로 뒤에 그 메서드 정의를 인라인 함수로 다시 작성하는 것과 같

  다.

 

'스터디 > 활동' 카테고리의 다른 글

STL 2일차  (0) 2013.06.19
STL 기초 1일차  (0) 2013.06.18
디자인 패턴 종류  (0) 2013.06.07
3. 클래스 생성자와 파괴자  (0) 2013.03.19
1.클래스 정리  (0) 2013.03.14
Posted by 피씨컴

C++ 기초 플러스 4판

Stephen Prata 저

 

 

● OPP가 갖추고 있는 대표적인 기능

1. 추상화 (abstraction)

2. 캡슐화 (encapsulation)

3. 데이터 은닉 (data hiding)

4. 다형 (inheritance)

5. 상속 (inheritance)

6. 코드 재활용 (reusable code)

 

● 추상화

컴퓨터 분야에서 추상화란 정보를 사용자 인터페이스로 표현하는것이다. 즉 어떤 문제에 필수적인 조작적 기능들을 추상화하고 그것으로 해결책을 표현하는 것이다.

 

● 데이터형이란 무엇인가?

먼저 우리는 메모리에 저장되는 형태만으로 데이터형을 생각하기 쉽다. 예를 들어 char 1바이트 메모리를 나타내고 double을 8바이트 메모리를 나타낸다 그러나  좀더 깊이 생각해보면 데이터형이란 그

것을 대상으로 수행할 수 있는 연산에 의해 정의된다

 

- 기본형을 서술

1. 데이터 객체에 필요한 메모리의 크기를 결정한다.

2. 데이터 객체를 사용하여 수행할 수 있는 연산이나 메서드를 결정한다.

 

● 클래스

클래스(class)는 추상화를 사용자 정의 데이터형으로 변환해 주는 C++의 매개물이다.

클래스는 데이터 표현과 데이터를 조작하는 메서드들을 하나의 패키지 안에 결합 한다.

 

- 클래스 선언(class declaration) 

 데이터 맴버와 public 인터페이스, 맴버함수를 이용하여 데이터 표현을 서술한다.

 

- 클래스 메서드 정의 (class method definitions)

 클래스 맴버 함수가 어떻게 구현되는지를 서술한다.

 

※ 클래스 선언은 클래스의 개요를 제공하는것이고, 메서드 정의는 세부 사항을 제공하는 것

 

- C++의 키워드인 class

이 코드가 클래스 설계를 위한 정의라는 사실 나타낸다.

 

- 클래스 맴버 함수를 클래스 매서드(class method)라고 하기도 한다

- 맴버함수는 그자리에서 정의될 수도 있고, 클래스에 속해있는 다른 맴버 함수들 처럼 원형에 의해

   표현될 수도 있다.

- 원형에 의해 표현되는 맴버 함수들의 완전한 정의는 나중에 나온다.

- 함수 인터페이스를 서술하는 데에는 원형만으로도 충분하다.

- 데이터와 메서드를 하나로 결합하는 것이 클래스의 가장 두드러진 특징이다.

 

 

● 데이터 은닉 :  데이터를 클래스의 private부분에 넣는 것

private 같이 데이터에 직접 접근하지 못하게 차단하는 것을 데이터 은닉이라 한다.

- 장점

사업설명서와 같은 공시서류에서 데이터를 은닉하는것은 나쁘지만

- 장점

프로그래밍에서는 데이터의 무결성을 지켜주므로 좋은 것이다.

 

● 추상화 : public인터페이스는 설계의 추상화를 나타낸다.

 

● 캡슐화 : 세부적인 구현들을 따로 결합하여 추상화와 분리하는 것을 캡슐화라고 한다.

    데이터 은닉도 캡슐화의 한 예이다.

 

● public 또는 private?

- 일반적으로 데이터 항목들은 private부분에 선언된다.

- 클래스 인터페이스를 구성하는 맴버 함수들은 public부분에 선언 된다.

  그렇지 않으면, 프로그램에서 그 함수들을 호출할 수 없다.

- 클래스 선언에서 private 키워드는 없어도 된다. 그 이유는 클래스 객체에 대한 디폴트 접근 제

   어 로 지정되어 있기 때문이다.

 

 

●  클래스 맴버함수

- 맴버함수는 일반함수와 거의 같으며 함수 머리(function heading)와 함수몸체(function body)

   를 가지고 있으며 리턴형과 전달자도 가질 수 있다.

- 맴버 함수를 정의할 때, 그 맴버 함수가 어느 클래스에 속하는지 나타내기위해 사용 범위 결정

   연산자(::)를 사용해야 한다.

- 클래스 매서드는 그 클래스의 private 부분에만 접근할 수 있다.

 

 

 

 

 

'스터디 > 활동' 카테고리의 다른 글

STL 2일차  (0) 2013.06.19
STL 기초 1일차  (0) 2013.06.18
디자인 패턴 종류  (0) 2013.06.07
3. 클래스 생성자와 파괴자  (0) 2013.03.19
2.인라인 메서드 & cerr  (0) 2013.03.19
Posted by 피씨컴