전체보기 116

qsort를 사용하여 배열 정렬하기

개요C언어에서 배열을 내림차순, 오름차순으로 정렬해야 할 때, stdlib.h의 qsort 함수를 사용하여 데이터를 정렬할 수 있다.본 글에서는 C에서 제공하는 qsort 함수에 대해 알아보자.사용 방법#include 정수형 배열을 내림차순/올림차순 할 때 사용할 콜백함수 등록.qsort 함수 호출.기본 구조stdlib.h에서 Quick Sort 함수인 qsort 함수를 제공해준다.void qsort (void *base, size_t nel, size_t width, int (*compare)(const void *, const void *);base: 정렬하고자 하는 배열의 포인터nel: 배열의 각 원소들의 총 수width: 배열에서 원소 하나의 크기(*compare): 비교를 수행할 함수 포인터.예..

Programming/C 2025.01.27

Split 함수 만들기 #2 - string delimiter

개요앞서 포스팅한 글에서 언급했듯이, C++ 에는 delimiter를 이용한 split 함수가 없다. 필요한 경우, split 함수를 직접 만들어 활용해야 한다. 이번 글에서는 delimiter를 char 단위가 아닌 string단위로 활용하여 split 함수를 구현해 보자. 💡 delimiter가 char단위가 아닌 string단위이기 때문에, 보다 범용적으로 쓰일 수 있다.사용 방법strfind로 delimiter가 해당하는 위치를 찾는다.찾을 문자열의 0번째부터 strfind로 찾은 위치까지를 string 형식의 token으로 저장한다.token을 벡터에 저장한다.token부분을 찾을 문자열에서 지운다.2~4를 반복한다.찾을 문자열의 남은 부분을 벡터에 저장한다.결과를 리턴한다.핵심 코드vecto..

Programming/C++ 2025.01.26

Split 함수 만들기 #1 - char delimiter

개요C++ 에는 delimiter를 이용한 split 함수가 없다. 필요한 경우, split 함수를 직접 만들어 활용해야 한다.사용 방법input string과 delemiter를 입력받는다.input string을 sstream 헤더를 사용한 stringstream 변수로 복제한다.getline함수를 사용하여 stringstream변수를 delimiter를 단위로 반복하여 파싱 한다.결과를 벡터에 저장한다.핵심 코드vector split(string input, char delimiter) { vector result; stringstream ss(input); string tmp; while (getline(ss, tmp, delimiter)) result.push_back(tm..

Programming/C++ 2025.01.25

객체지향프로그래밍 - 추상화와 OOP 3요소와의 관계

개요객체지향 프로그래밍에서 추상화(Abstraction)는 OOP의 핵심 개념이지만, 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)이라는 "3요소"로 따로 분리되어 언급되지는 않는다. 그러나 추상화는 3요소에 깊이 관여하는 개념으로, 특정 요소에 포함되거나, 독립적인 개념으로 이해될 수 있다.추상화와 캡슐화의 관계추상화는 무엇을 해야 하는지에 초점을 맞추는 반면, 캡슐화는 어떻게 할 것인지에 초점을 맞춘다.예를 들어, 추상 클래스나 인터페이스를 사용하여 "행동의 골격(what to do)"을 정의한 다음, 세부 구현은 감추는 캡슐화를 통해 내부적으로 처리한다.추상화와 상속의 관계상속은 추상화를 실현하기 위한 도구로 사용된다.부모 클래스는 공통적인 특징과..

객체지향프로그래밍의 3요소 5원칙 #2 - 5원칙

개요객체지향 프로그래밍(OOP)의 SOLID 원칙은 객체지향 프로그래밍에서 설계의 유연성과 확장성을 높이기 위한 다섯 가지 중요한 원칙을 뜻한다.SRP (Single responsibility principle) 단일 책임 원칙OCP (Open-closed principle) 개방 폐쇄 원칙LSP (Liskov substitution principle) 리스코브 치환 원칙ISP (Interface segregation principle) 인터페이스 분리 원칙DIP (Dependency inversion principle) 의존 역전 원칙이번 글에서는 이 다섯 가지 원칙을 간단한 설명과 코드 예제로 알아보자. 1. 단일 책임 원칙(SRP, Single Responsibility Principle)클래스는 ..

객체지향프로그래밍의 3요소 5원칙 #1 - 3요소

개요객체지향 프로그래밍(OOP)은 소프트웨어 개발에서 중요한 패러다임으로, 코드의 재사용성과 유지보수성을 높이는 데 큰 기여를 한다.OOP는 객체 중심적인 사고를 하고 있으며 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 객체 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.이 글에서는 OOP의 핵심 캡슐화(Encapsulation), 상속(Inheritance), 다형성(Polymorphism)이라는 세 가지 요소를 간단한 예제와 함께 알아보자.캡슐화(Encapsulation) = 정보은닉데이터를 외부로부터 보호하고, 객체의 내부 구현을 숨기며, 외부에서는 공개된 인터페이스를 통해서만 객체와 상호작용하도록 하는 개념이다.예제balance는 private로 보호되고, 외부에서 d..

728x90
반응형