Vector 


Vector 는 대표적인 시퀀스 컨테이너이며 배열과 비슷하다


Vector는 동적 배열 구조를 C++로 구현한 것이다. C의 배열(빠른 랜덤접근이 가능)처럼 행동하지만 자동으로 배열의 크기조절과

객체의 추가, 삭제가 가능하다.


Vector는 C++ 표준 템플릿 라이브러리 중 하나여서 어떤 타입이라도 저장 가능하지만 한번에 한 타입만 저장 가능



★ 배열과의 차이점 : 

  배열

Vector 

 메모리에서 연속적 = 하나의 타입을 가진 블록이 여러개가 붙어있다

 즉, 같은 타입이어야 한다


템플릿 클래스이기 때문에 원하는 모든 타입의 일반적인 배열 생성가능

무조건 데이터를 선형적으로 만들려고 함.

If 저장공간 < 데이터 , 현재 보유 메모리의 2배만큼 할당




*시퀀스 컨테이너 : 저장원소가 삽입 순서에 따라 상대적인 순서를 가지는 컨테이너


Vector 는 임의 접근 반복자 ( Random Access Iterator ) 를 지원하는 배열 기반 컨테이너이다


* 임의 접근 반복자 : 양방향 반복자의 모든 기능을 포함, *연산자 쓰기 / ++, -- 연산자로 앞뒤 이동하기 / 거리에 상관없이 상수시간내 이동가능



사용법


#include<vector>   //라이브러리 추가

vector<int> A;


/* 2차원 배열같이 사용하려고 한다면 */

vector<vector <int> > Map(Row , vector<int>(Column,0))  ; 

      (여기서 >>를 붙여쓰면 오류가 난다. 다른 연산자로 인식해버림 ) 

 // vector <int>형 벡터를 행 Row개  , 열  Column개로 할당하고 초깃값 0으로 지정한다는 뜻

                   




Assert


assert () : 함수안에서 인자를 바을 때 그 인자값이 정상으로 들어왔는지 판단하는 역할을 함


사용법


#include <cassert>  // c++ 라이브러리

#include <assert.h > // c


function (int a)

{

     assert ( a> 0 );

...

}


만약 assert() 안의 구문이 거짓이면 오류를 띄움.

'Engineering > Algorithm' 카테고리의 다른 글

[C++] 2차원 배열 동적 할당 방법  (0) 2016.11.17


이차원 배열 동적 할당 방법


#include <string.h>   // memset 함수 사용을 위해 include
 
/* 메모리 할당 */ 
int **arr = new int*[sizeY];
for(int i = 0; i < sizeY; ++i) {
    arr[i] = new int[sizeX];
    memset(arr[i], 0, sizeof(int)*sizeX);   // 메모리 공간을 0으로 초기화
}
 
/* 메모리 해제 */
for(int i = 0; i < sizeY; ++i) {
    delete [] arr[i];
}
delete [] arr;



여기서 memset은 C++ 에서  


void * memset ( void * ptr, int value, size_t num );

기능 = 포인터 ptr이 가리키고 있는 Memory Block을 value 값으로  채운다



+ 동적할당한 이차원 배열을 함수의 매개변수로 쓰는법


간단하다 


void FunctionName(char **p) {

......

}


같이 이중 포인터로 받으면 된다!


더 자세히 알고 싶으면

http://shinluckyarchive.tistory.com/326


이분의 블로그를 보면 된다

'Engineering > Algorithm' 카테고리의 다른 글

[C++] Vector , Assert 함수  (0) 2016.11.19

+ Recent posts