c++
-
[디자인 패턴] SOLID 의 Interface Segregation Principle알고리즘/디자인 패턴(Design Patterns) 2022. 12. 13. 20:03
디자인 패턴에 대한 정리 내용 중 SOLID 원칙의 네 번째 원칙인 Interface Segregation Principle 즉, 인터페이스 분리 원칙에 대하여 적어보겠습니다. SOLID 설계 원칙은 유지 보수가 쉽고 재사용 가능하도록 하고, 확장 가능한 개발을 위해 지켜지고 있습니다. 저의 네 번째 디자인 패턴 글에서는 C ++의 인터페이스 분리 원칙과 이를 사용하였을 때, 장점 등을 보겠습니다. 이 글 시리즈에서는 총 SOLID의 5가지 원칙에 대해 살펴보겠습니다. SRP - Single Responsibility Principle OCP - Open/Closed Principle LSP - Liskov Substitution Principle ISP - Interface Segregation Pri..
-
[프로그래머스] 몸짱 트레이너 라이언의 고민 / c++알고리즘/프로그래머스(PRPGRAMMERS) 2022. 12. 7. 01:40
몸짱 트레이너 라이언의 고민 헬스장에서 일하는 몸짱 트레이너 라이언은 최근 손님들에게 불평을 많이 들었다. 그것은 옷을 갈아입는데 다른 사람과 너무 가까워서 옷을 갈아입기가 불편하다는 것이었다. 불만을 해결하기 위해 고민하던 라이언은 손님들의 예약시간을 참고해서 되도록이면 서로 멀리 떨어지도록 키를 나눠주기로 마음먹었다. 예를 들어, 락커들이 3x3 정사각형 모양으로 배치되어있고, 동시간대에 2명의 손님이 예약되어있다면 아래와 같이 락커를 할당하는 것을 고려해볼 수 있다. 라이언이 일하는 헬스장은 아래와 같은 상황이라고 가정하자. 락커는 정사각형으로 배치되어있고, 락커 사이에 옷을 갈아입을 공간이 있다. 단, 이 공간은 계산에서 제외된다. 락커 간 거리는 상하좌우는 1로, 대각선은 2로 계산한다. 손님들..
-
[C++] lambda 함수 기본부터카테고리 없음 2022. 11. 16. 14:25
In C++11 and later, a lambda expression—often called a lambda—is a convenient way of defining an anonymous function object (a closure) right at the location where it's invoked or passed as an argument to a function. MSDN-Lambda expressions in C++ 람다 함수는 기존 클로저(Closure)의 역할을 좀 더 쉽게 구현하게끔 하기 위하여 설계되었으며, C+11에서 처음 제시되었습니다. 여기서 클로저란 함수처럼 호출될 수 있는 이름 없는 객체를 일반적으로 일컫는 용어입니다. 클로저의 간단한 예시를 들어보자면, 더보기 st..
-
[C++] Reference 와 Pointer 의 차이점 설명해줄래뜯고 또 뜯어보는 컴퓨터/씨쁠쁠 C++ 2022. 11. 14. 15:10
안녕하세요. 요번 시간에는 Reference와 Pointer의 차이점에 대해서 적어보려고 합니다. 우선, 포인터(Pointer)와 레퍼런스(Reference) 둘 다, 변수에 대하여 값을 가리키거나 변수 자체에 접근하여 값을 변경할 수 있도록 하는 역할을 실시하게 됩니다. 하지만 포인터와 레퍼런스의 가장 근본적인 차이는 포인터의 경우, 포인터는 메모리가 저장되어 있는 곳을 가리키는 값을 저장하게 되고, 레퍼런스의 경우 값(변수)에 대한 별칭을 의미 하는데 있어 차이가 존재합니다. 위의 그림0 을 보게 되면, 포인터 p 는 변수 a의 주소 값을 담아두게 되고, 레퍼런스인 ref는 단지 a의 별칭일 뿐, a의 주소 값을 저장하지 않습니다. 그럼 각 차이점을 알아보도록 하겠습니다. 비 교 포인터(Pointer..
-
야간 전술보행 C++알고리즘/프로그래머스(PRPGRAMMERS) 2022. 11. 3. 02:51
https://school.programmers.co.kr/learn/courses/30/lessons/133501?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 전쟁에 참여한 화랑이는 적군의 기지에 침투하여 정보를 훔쳐오는 임무를 받았습니다. 화랑이는 야간 전술 보행을 이용하여 직진하며, 야간 전술 보행은 1m/s의 일정한 속도로 나아갈 수 있습니다. 화랑이의 침입 경로에는 경비병들이 각자 일부 구간들을 감시하고 있습니다. 각각의 경비병들이 감시하는 구간은 서로 겹치지 않으며, 일정 시간 동안 근무 후 일정 시간 동안 휴식을..
-
왜 c에는 이동 연산자가 없는가.뜯고 또 뜯어보는 컴퓨터/씨쁠쁠 C++ 2022. 11. 3. 01:23
이동 의미론(move semantic)을 사용하다가 문득 든 생각은 왜 C에는 이동연산자가 없을까? 하는 질문이 생각났습니다. 나름대로의 해답을 도출했는데, stackOverflow에서도 비슷한 질문을 한 경우가 있어, 첨언하여 답변해보겠습니다. 우선 C++에서 "move semantic"은 임시 객체에 대해서 효율적인 이동이 가능하도록 하는 오버로딩 방법중 하나입니다. - 이를 생각해보지 못했는데, 이동 연산자 또한 함수 오버로딩의 일종이었습니다. 그렇다면 우선적으로 c 에서는 함수의 오버로딩이 허용되지 않기 때문에 쉽사리 답을 내릴 수 있습니다. C 에서는 함수 오버로딩이 불가능하기 때문에, 만약 데이터 이동 함수를 작성하려면, Copy_Struct 처럼 앞에 Copy라고 명시적으로 이 함수가 Str..
-
Vtable - 어디에 존재하는가..뜯고 또 뜯어보는 컴퓨터/씨쁠쁠 C++ 2022. 11. 3. 00:59
0. Vtable 이란 vtable 이란, Virtual Function Table의 약자로, 상속 구조에서 메서드를 virtual로 선언하게 되면, vtable이 생성되게 됩니다. vtable(가상 테이블)은 특수한 메모리 영역을 활용하여 알맞은 코드를 호출하게 되는데, 기본적인 정보는 virtual 메서드가 하나 이상 정의된 클래스마다 vtable은 하나씩 구현되어 있습니다. 따라서 vtable을 가진 클래스를 생성한 객체마다 이 vtable에 대한 포인터를 가지게 됩니다. vtable은 상속구조에서 동적 바인딩(dynamic binding)이라는 중요한 특성을 가지므로, 꼭! 공부해두시길 바랍니다. 1. vTable 실험 단일 상속구조를 가진, class의 경우 다음과 같이 메모리 구조를 가지게 됩..
-
[C++] String to Int, Float, Double 자료형 / stoi, stol, stoll뜯고 또 뜯어보는 컴퓨터/씨쁠쁠 C++ 2022. 10. 26. 00:56
0. atoi 계열 함수 및 sscanf( ) 기존 C에서는 str형식 사용시 다른 자료형(int, double, float)에 맞도록 읽어오려면, atoi( ) 및 sscanf( )로 형식을 지정해주었으며, 이를 활용한 간단한 예시는 밑과 같습니다. const char *str = "12345"; // atoi 계열 함수 int x = atoi(str); // sscanf 사용 int y; sscanf(str, "%d", &y); c++에서는 이와 비슷한 방법으로 stoi( ) 및 타입 캐스팅 그리고, 반복자를 활용하여, 데이터 변환을 할 수 있는 데, 그중에서, stoi( ) 계열 함수에 대해 알아보겠습니다. 1. c++ 에서의 stoi( ) c++에서 stoi() 함수는 문자열을 정수 값으로 변환하..