본문 바로가기

cpp6

CPP Standard Template Library - iterator STL(Standard Template Library) STL은 CPP을 위한 라이브러리로서 CPP 표준 라이브러리의 많은 부분을 영향을 끼쳤습니다. STL은 알고리즘, 컨테이너, 반복자(iterator)로 구성되어 있습니다. 반복자 (iterator)? STL 컨테이너에 저장된 요소를 반복적으로 순회하며 각각의 요소에 접근할 수 있게 해주는 객체입니다. 다음 코드에서 i 변수가 반복자의 역할을 하는 변수라고 볼 수 있습니다. for (int i = 0; i < 5; i++) { std::cout = b // error 산술 연산자 사용 불가능 a - 4 // error 출력 반복자 출력 반복자는 입력반복자와는 반대로 컨테이너의 값을 할당하는데 사용합니다. 출력 반복자는 가리키고 있는 값을 할당(변경)할.. 2021. 12. 11.
CPP Template 일반화 프로그래밍(Generic Programing) 데이터 형식에 의존하지 않고 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식을 의미합니다. CPP에서 템플릿을 이용하여 일반화 프로그래밍을 할 수 있습니다. 템플릿(Template) 이란? 템플릿은 매개변수 타입에따라 동작하는 하나의 틀을 만드는 것을 의미합니다. 자료형이 모호한 상황에서 기능은 확실한 함수나 클래스를 만들려고 할때 템플릿을 사용하여 여러 자료형에 동작하는 함수나 클래스를 만들 수 있습니다. 템플릿의 활용 프로그래밍을 하면서 기능은 확실한데 여러 자료형을 사용하고 싶은 상황이 발생할 수 있습니다. 예를들어, 두 수를 입력받아 더한 후 반환하는 함수를 만들고 싶다고 가정해.. 2021. 12. 9.
CPP Casts 타입 캐스팅이란 현재 Type에서 다른 Type으로 변환하는 것을 의미합니다. 묵시적 형변환, 명시적 형변환 다음과 같이 서로 다른 자료형의 값을 대입하면 어떻게 될까요? 에러가 발생해서 프로그램이 종료될까요? #include using namespace std; int main(void) { double s = 333.3; int a = s; cout 2021. 12. 4.
CPP Exception - 3 std::exception (예외 클래스) 여태까지 조건문을 이용하여 예외 상황임을 판단하여 직접 throw로 예외를 던졌었습니다. std::exception 클래스를 통해 시스템 상 내부에서 알아서 발생한 예외를 throw 해줍니다. std::exception은 CPP의 표준 클래스로 여러 종류의 예외를 나타내는 자식 클래스들을 가지고 있습니다. 다음과 같이 벡터 클래스의 길이보다 1 더 큰 크기를 재할당시켜 에러가 나도록 유도해봅시다. #include #include #include using namespace std; int main() { try { vector v; v.resize(v.max_size()+1); } catch(std::exception & e) { cout 2021. 11. 28.
CPP Exception - 2 다른 함수를 호출했을 때 예외처리 다음과 같이 try문 안에서 함수를 호출한 후 해당 함수에서 try, catch를 사용하지 않고 throw를 보내면 어떻게 될까요? catch문이 존재하지 않아 에러가 발생하게 될까요? 다음과 같이 함수를 작성해보고 실행해봅시다. #include using namespace std; void func() { throw 1; } int main() { try { func(); } catch(...) { cout 2021. 11. 28.
CPP Exception - 1 프로그램을 작성하다보면 문법적인 오류가 아니라 논리적인 오류로 프로그램이 의도치 않는 동작을 하는 경우가 있습니다. 예를 들어, 다음과 같이 1부터 9의 숫자를 입력받고 해당 숫자를 출력하는 프로그램을 만들어봅시다. #include using namespace std; int main() { int n; cin >> n; cout n; if (n 9) { cout 2021. 11. 27.