전체 글83 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. [자료구조] Stack 스택이란? 스택은 선형구조를 가진 자료구조로 한 쪽 끝에서만 자료를 넣거나 빼는 후입 선출(Last-in First-out)의 형태로 동작합니다. 스택은 기본적으로 다음과 같은 연산을 합니다. push push 연산을 하면 스택에 지정한 데이터를 맨 끝에 넣습니다. pop pop 연산을 하면 스택에 맨 끝에 있는 데이터를 가져오고 스택에서 제거합니다. peek peek 연산을 하면 스택에 맨 끝에 있는 데이터를 가져옵니다. 스택의 활용 스택은 이전 상태로 되돌리는 경우에서 많이 사용됩니다. 예를 들어, 터미널에서 이전에 사용했던 명령들을 확인하고 사용할 수 있는 히스토리 기능이나 브라우저에서 이전 페이지로 되돌아가고 싶을 때 사용됩니다. 스택의 구현 (C) 스택은 배열 또는 링크드 리스트로 구현이 가능합.. 2021. 12. 1. 가상서버와 컨테이너 비교 가상서버? 가상 서버는 가상화 소프트웨어를 사용하여 하드웨어를 공유하는 형태로 마치 한 대의 전용 서버가 있는 것처럼 이용할 수 있게 해줍니다. 한 대의 가상머신에서도 여러 대의 가상 서버를 가동할 수 있어 하드웨어 구입이나 설치 관리 비용을 줄일 수 있습니다. 이러한 가상화 소프트웨어를 하이퍼바이저(Hypervisor)라고 부르며 대표적으로 VMWare, VirtualBox, Hyper-V 같은 제품들이 있습니다. 컨테이너? 컨테이너란 가상화 기술중 하나로 대표적으로 리눅스 컨테이너가 있으며 기존의 OS를 가상화시키던 것과 달리 OS 레벨의 가상화로 프로세스를 격리시켜 동작하는 방식입니다. 대표적으로 docker, cri-o가 있습니다. 컨테이너와 가상 서버 비교 가상서버 컨테이너의 경우 커널이 공유되.. 2021. 11. 30. 쿠버네티스란? - 1 쿠버네티스 이전의 배포와 컨테이너, 컨테이너 오케스트레이션 쿠버네티스는 컨테이너화 된 애플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈 소스 플랫폼입니다. 그렇다면 컨테이너는 무엇이고 쿠버네티스 라는 것으로 배포를 한다면 쿠버네티스가 있기 이전의 애플리케이션의 배포는 어떻게 이루어졌을까요? 쿠버네티스 이전의 배포 가상화 기술이 등장하기 이전에는 애플리케이션을 물리 서버에서 실행했었습니다. 하나의 물리 서버에서 여러 애플리케이션을 실행시키게 되면서 하나의 애플리케이션이 리소스를 전부 차지하는 상황이 발생하여 다른 애플리케이션의 성능이 떨어지는 등 문제가 발생하게 되었습니다. 이에 대한 해결책으로 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행할 수 도 있겠지만 각 서버의 리소스가 충분히 활용되지 않고, 유지해야 하는 물리 서버의 개수가 늘어나기 때.. 2021. 11. 30. 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. 이전 1 ··· 7 8 9 10 11 다음