본문 바로가기

Programming/C++124

상수와 기본 자료형 자신이 어떠한 언어를 좋아하건, 주로 사용하는 언어가 무엇이건, C라는 언어는 모든프로그래머의 공통 분모에 해당됩니다. 기본적으로 C 언어로 프로그래밍이 가능해야 JAVA로 프로그래밍을 하건, C++로 프로그래밍을 하건, 그 가치를 높일 수 있습니다. C언어가 제공하는 기본 자료형변수라는 것은 데이터를 저장할 메모리 공간을 할당하고, 이에 이름을 붙여준 것이라고 이미 정의하였습니다. 예를 들어서 정수를 저장할 메모리 공간 4바이트를 할당하고 나서 그 메모리 공간에 val 이라는 붙여 준다면 val이 바로 변수가 되는 것입니다. C 언어는 이러한 변수의 선언을 위해 자료형이라는 것을 제공합니다. 자료형이란 선언할 변수이 특징을 나타내기 위한 키워드 입니다. 기본 자료형 종류와 데이터의 표현 범위long d.. 2017. 8. 4.
우선순위 큐(Priority Queue)와 힙(Heap) 우선순위 큐의 이해 우선순위 큐와 우선순위의 이해큐의 핵심 연산은 큐에 데이터를 삽입하는 행위와 큐에서 데이터를 꺼내는 행위입니다. 이와 마찬가지로 우선순위 큐의 핵심 연산은 우서눈위 큐에 데이터를 삽입하는 행위와 우선순위 큐에서 데이터를 꺼내는 행위입니다. 반면 연산의 결과에는 차이가 있습니다. 큐는 연산의 결과로, 먼저 들어간 데이터가 먼저 나오지만, 우선순위 큐의 연산결과는 다음과 같습니다. 들어간 순서에 상관없이 우선순위가 높은 데이터가 먼저 나옵니다. 우선순위 큐는 응급상황에 비유할 수 있습니다. 우선순위를 지녀야 한다기 보다는, 데이터를 근거로 우선순위를판단할 수 있어야 합니다. 우선순위의 판단 근거는 프로그래머가 결정할 일입니다. 즉 목적에 맞게 우선순위를 결정하면 됩니다. 우선순위 큐의 구.. 2017. 8. 4.
앞서 설명한 스택과 함께 언급되는 자료구조입니다. 스택은 먼저 들어간 데이터가 나중에 나오는 구조인 반면, 큐는 먼저 들어간 데이터가 먼저 나오는 구조입니다. 큐의 이해FIFO(First in, First out) 구조의 자료구조라 불립니다. 큐의 ADT 정의enqueue 큐에 데이터를 넣는 연산, dequeue 큐에 데이터를 꺼내는 연산. 스택에서 데이터를 넣고 뺴는 연산을 가리켜 각각 push, pop 이라 하는 것처럼, 큐에서 데이터를 넣고 뺴는 연산에 대해서도 각각 enqueue, dequeue 라는 별도의 이름을 붙여주고 있습니다. 큐의 초기화를 진행합니다. 큐 생성 후 제일 먼저 호출되어야 하는 함수입니다. 큐가 빈 경우 참을 그렇지 않은 경우 거짓을 반환합니다. 큐에 데이터를 저장합니다. 매.. 2017. 8. 3.
인터넷 프로토콜 인터넷 프로토콜은 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 규약이며, OSI 네트워크 계층에서 호스트이 주소지정과 패킷 분할 및 조립 기능을 담당합니다. 이를 줄여서 IP라고도 합니다. IP의 정보는 패킷 혹은 데이터그램이라고 하는 덩어리로 나뉘어 전송됩니다. IP에서는 이전에 통신한 적이 없는 호스트에 패킷을 보낼 때 경로 설정이 필요 없습니다. 현재 인터넷에서 사용하는 표준 프로토콜은 인터넷 프로토콜의 4번째 판인 IPv4입니다. 그러나 IPv4는 주소공간 고갈 문제를 겪고 있어 조만간 6번쨰 판인 IPv6가 대중화될 것으로 보입니다. 라우팅라우팅은 어떤 네트워크 안에서 통신 데이터를 보낼 경로를 선택하는 과정입니다. 라우팅은 전화 통신망, 전자 정.. 2017. 8. 3.
스택 리스트는 대표적인 선형 자료 구조 입니다. 스택이란 자료구조도 선형 자료구조의 일종입니다. 쌓아 올려진 상자더미나 쟁반 위에 쌓인 접시. 먼저 들어간 것이 나중에 나옵니다. Last-In, First-Out 구조의 자료구조라고도 불립니다. 스택 ATD의 정의스택을 대표하는 넣고, 꺼내고, 들여다 보는 연산을 가리켜 각각 push, pop, peek이라 합니다. 때문에 스택의 ADT는 다음과 같이 정의가 되며, 이것이 스택의 보편적인 ADT입니다. void StackInit(Stack * pstack); 스택의 초기화를 진행합니다. 스택 생성 후 제일 먼저 호출되어야 하는 함수입니다. int SIsEmpty(Stack * pstack); 스택이 빈 경우 TRUE를, 그렇지 않은 경우 FALSE를 반환합니다.. 2017. 8. 2.
C++의 형 변환 연산자 C++ 진영에서는 C 스타일의 형 변환 연산자를 가리켜 오래된 C 스타일 형 변환 연산자라 부르기도 합니다. 이렇듯 C 스타일의 형 변환 연산자는 C언어와의 호환성을 위해서 존재할 뿐, C++에서는 새로운 형 변환 연산자와 규칙을 제공하고 있스니다. #include using namespace std; class Car{private:int fuelGauge;public:Car(int fuel) : fuelGauge(fuel){ }void ShowCarState() { cout 2017. 8. 2.
예외처리 어떠한 경우에 예외의 발생위치와 예외의 처리위치가 달라야 하는지 예를 하나 들겠습니다. 대부분의 경우에 있어서 예외의 발생위치와 예외의 처리위치는 다릅니다. #include #include #include using namespace std; int StoI(char * str){int len = strlen(str);int num = 0; for (int i = 0; i str1.. 2017. 8. 2.
예외처리(Exception Handling) 예외상황과 예외처리의 이해 예외는 프로그램의 실행 도중에 발생하는 문제상황을 의미합니다. 따라서 컴파일 시 발생하는 문법적인 에러는 예외의 범주에 포함되지 않습니다. #includeusing namespace std; int main(void){int num1, num2;cout > num1 >> num2; cout 2017. 8. 1.
템플릿2 C++ 표준 라이브러리는 템플릿을 기반으로 디자인된다. 따라서 템플렛을 잘 알면, 그만큼 라이브러리에 대한 이해도와 활용능력이 향상됩니다. Point 클래스를 다음의 형태로 템플릿화 하였습니다. BoundCheckArray 클래스 템플릿을 정의하였습니다. 위으 클래스 템플릿을 기반으로 Point 템플릿 클래스의 객체를 저장할 수 있는 객체는 어떻게 생성해야 할까? 템플릿 클래스라 하여 일반 클래스와 비교해서 다른 문법체계를 지니는 것은 아니니, 우리가 알고 있는 C++ 문법의 이해를 기반으로 템플릿과 관련된 다양한 확장이 가능합니다. 특정 템플릿 클래스의 객체를 인자로 받는 일반함수의 정의와 friend 선언 함수 템플릿을 특수화하는 이유는 특정 자료형에 대해서 구분이 되는 다른 행동을 보이기 위해서 입.. 2017. 8. 1.
템플릿(Template) 함수 템플릿은 함수를 만들어 낸다. 함수의 기능은 결정되어 있지만, 자료형은 결정되어 있지 않아서 결정해야 합니다. 함수 템플릿이라는 것은 함수를 만드는 도구가 됩니다. 함수 템플릿도 다양한 자료형의 함수를 만들어 낼 수 있습니다. T는 자료형을 결정짓지 않겠다는 의미로 사용한 것입니다. 즉, 함수를 만들어 내는 템플릿을 정의하기 위해서 사용된 것입니다. #include using namespace std; template T Add(T num1, T num2){return num1 + num2;} int main(void){cout 2017. 8. 1.