예전 (133) 썸네일형 리스트형 [STL] 반복자와 반복자 무효화 현상 반복자 반복자란 컨테이너에 저장된 요소를 순회하고 접근하는 스마트 포인터이다. ( 스마트 포인터란 언제 할당되고 해제되는지를 아는 똑똑한 포인터라는 뜻이다. ) 반복자는 조작 방법에 따라 5가지 종류로 나뉠 수 있다. 1. 입력 반복자(input iterator) : 반복자가 가리키는 위치의 데이터를 읽기만 가능한 반복자로 다음 위치로 이동할 수 있다. 2. 출력 반복자(output iterator) : 반복자가 가리키는 위치의 데이터를 쓰기만 가능한 반복자로 다음 위치로 이동할 수 있다. 3. 순방향 반복자(forward iterator) : 입력 반복자와 출력 반복자의 기능과 더불어 가리키는 위치의 데이터를 여러번 읽거나 쓸 수 있고 현재의 위치를 저장하여 동일한 위치에서 다시 순회를 시작할 수 있다.. [STL] 컨테이너의 분류 및 정리 ( Vector, List, String, Deque ) 1. Vector : 시퀀스 컨테이너 이면서 , 연속 메모리 기반 컨테이너이다. 특징 ① 메모리가 증가할 때 현재 메모리의 1.5배로 증가한다. ② 임의 접근 반복자를 사용하며 산술 연산이 가능하다. ③ 삽입, 삭제 보단 검색에 용이하다. ④ 삽입 삭제시 메모리를 재할당하고 컨테이너를 복사해야 한다. 2. List : 시퀀스 컨테이너 이면서 , 노드 기반 컨테이너이다. 특징 ① 삽입, 삭제에 용이하다. (리스트의 앞뒤에 추가할 수 있다.) ② 양방향 반복자를 제공하며 산술 연산이 불가하나, 이동은 가능하다. 3. String : 시퀀스 컨테이너 이면서 , 연속 메모리 기반 컨테이너이다. 특징 ① 문자열 전용 컨테이너로 문자열 관련 함수를 제공한다. ② 임의 접근 반복자를 사용하며 산술 연산이 가능하다. .. [STL] 컨테이너 컨테이너 컨테이너란 부둣가에 많이 보이는 박스로, C++에선비슷한 성질의 객체를 한군데에 모아 관리하고 저장하는 용기라는 뜻이다. STL의 컨테이너는 크게 순차 컨테이너와 정렬 연관 컨테이너로 나눌 수 있다. - 순차 컨테이너 ( Sequence Container ) 순차 컨테이너는 시퀀스 컨테이너 라고도 불린다. 시퀀스라는 말은 일렬로 나열되어 있다는 뜻이다.순차 컨테이너는 자료를 순차적으로 저장하는 방식에 있어 가장 일반적인 컨테이너이다. 순차 컨테이너에는 Vector, List, String, Deque 이 있다. - 정렬 연관 컨테이너 ( Sorted Associated container ) 정렬 연관 컨테이너란 컨테이너 속의 자료들이 규칙에 따라 연관 즉, 정렬 되어있는 컨테이너 이다.일정한 규.. [C++] 템플릿 ( template ) - 템플릿의 특수화 템플릿의 특수화 특별한 자료형에 대해 다른 기능으로 처리를 하고자 할 때 사용한다. 예를 들어 다른 자료형은 일반적으로 쓰고, char* 형이 올때는 특별하게 하고싶을때 쓴다. template int Sizeof(T a) { return sizeof(a); } template int Sizeof(char* a) //char* 형으로 매개변수가 오면 해당 함수가 호출된다. { return strlen(a); } 만약 Sizeof 함수 호출시 char* 형이라면 char* 에 특수화된 함수가 출력된다. [C++] 템플릿 ( Template ) - 함수 템플릿과 클래스 템플릿 템플릿 오버로딩을 활용하기 위한 것으로 기능은 결정되어 있으나 자료형이 정해지지 않은 것이다. 템플릿이란 말 그대로 무엇을 만들기위해 찍어내는 틀이다. 템플릿은 크게 함수 템플릿과 클래스 템플릿으로 나눌 수 있다.함수 템플릿은 간단히 말하면 함수를 찍어내는 틀을 말하고, 클래스 템플릿은 클래스를 찍어내는 틀을 말한다. 1-1. 함수 템플릿 위에서 말했듯이 함수를 만드는 도구이다.함수를 선언할 때 처리할 데이터의 자료형이 정해지지 않은 것으로 함수의 기능만 결정되어진 것이다. 컴파일시 사용한 데이터 타입으로 함수가 만들어진다. 그렇게 만들어 진 것이 템플릿 함수이다. 예를 보자. // 스왑 template void Swap(T &num1,T &num2) { T temp = num1; num1 = num2;.. [C언어] C스타일 파일입출력 C스타일 파일입출력 C스타일 파일 입출력은 C++보다는 좀 더 번거롭다. 하지만 C++ 파일입출력을 이해한 사람이라면 이해하기 쉬우므로 겁먹지 말자. 파일입출력을 할때 파일 자료형에 대한 포인터 변수를 선언한다.FILE *fp = 0; C스타일 파일입출력은 txt모드와 binary(2진수)모드로 나눌 수 있다. 모드에는 rt ( 텍스트 읽기모드), wt ( 텍스트 쓰기모드 ), at ( 텍스트 붙여넣기 모드),rb ( 바이너리 읽기모드), wb( 바이너리 쓰기모드), ab( 바이너리 붙여넣기 모드) 가 있으며 r+ w+ a+ 등 각각의 + 모드가 있지만, 간단히 rt, wt, at 에 대해서만 보도록 하겠다. 파일을 읽을 땐fp = fopen("score.txt","rt");이렇게 쓰며 "score.tx.. [C++] C++ 스타일 파일 입출력 C++ 스타일 파일 입출력 C++스타일 파일 입출력은 C스타일 보다 쉽다. 사실 C보다 쉬운거라기보단 C스타일 파일입출력을 이해한 사람이면 누워서 떡먹기이기 때문에 쉽다는 말이다. 1. 파일에 쓰기 #include // 파일 저장하는 함수 void OutputSave() { ofstream fout; fout.open("Info.txt"); int nMoney,nBad; char *pName; pName = GetName(); nMoney = GetMoney(); nBad = GetBad(); fout [STL] 컨테이너의 정의 STL은 standard template Library이다. 컨테이너 컨테이너란 부둣가에 많이 보이는 박스로, C++에선 비슷한 성질의 객체를 한군데에 모아 관리하고 저장하는 용기라는 뜻이다. STL의 컨테이너는 크게 순차컨테이너, 정렬연관컨테이너, 어뎁터 컨테이너. 세 가지로 나뉠수 있다. 1. 순차 컨테이너 (Sequence container) - 삽입삭제에 제약이 없는 것들을 모아 놓은 것이다. 자료를 순차적으로 저장하는 방식에 있어 가장 일반적인 컨테이너이다. 삽입된 자료를 해당 컨테이너 성질에 맞게 무조건 저장하며 데이터의 제약은 없다. 순차적으로 임의의 위치에 원하는 요소를 삽입 삭제할 수 있다. 대표적인 STL에는 벡터, 리스트, 덱이 있다. 2. 정렬 연관 컨테이너 (Associative .. 이전 1 ··· 13 14 15 16 17 다음