cpp44 뇌를 자극하는 C++ STL : 6장. 시퀀스 컨테이너 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 6장. 시퀀스 컨테이너 본격적인 STL의 시작이다. 이번단원에서는 시퀀스 컨테이너에 대하여 배웠다. Vector " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 vector는 임의 접근 반복자를 지원하는 배열 기반 컨테이너이다. 배열 기반의 컨테이너이므로 원소가 하나의 메모리 블록에 할당된다. Capacity 는 다른 컨테이너들에는 없으며 오직 vector만이 갖고있다. clear() 맴버함수를 통하여 원소를 제거한후에는 size는 0이 되지만, capacity는 그대로 유지된다. 메모리가 부족한 상황이라면 이는 비효율적이다. 따라서 할당된 메모리를 모두 제거하는 방법이.. CS/C++ 2022. 1. 18. 뇌를 자극하는 C++ STL : 5장. STL 소개 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 5장. STL 소개 STL의 간략한 소개와 기본 구성요소에 대해 살펴보았다. STL의 구성 요소 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 - 컨테이너(Container): 객체를 저장하는 객체로 컬렉션 혹은 자료구조라고도 합니다. - 반복자(Iterator): 포인터와 비슷한 개념으로 컨테이너의 원소를 가리키고, 가리키는 원소에 접근하여 다음 원소를 가리키게 하는 기능 - 알고리즘(Algorithm): 정렬, 삭제, 검색, 연산 등을 해결하는 일반화된 방법을 제공하는 함수 템플릿. - 함수객체(Funtion Object): 함수처럼 동작하는 객체로 operator.. CS/C++ 2022. 1. 18. 뇌를 자극하는 C++ STL : 4장. 템플릿 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 4장. 템플릿 이번시간은 기초 C++문법 복습의 마지막 쳅터이다. 이후 5장부터 이책의 본격적인 주제인 STL에 관하여 다룬다. For_each() 함수 구현해보기 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 다음 코드는 For_each()를 template함수로 만들어 사용하는 예시이다. 원소의 type을 클라이언트가 직접 결정하여 사용할수가 있다. #include #include using namespace std; template void For_each(Iter begin, Iter end, Func pf) { while (begin != end) { pf(*.. CS/C++ 2022. 1. 18. 뇌를 자극하는 C++ STL : 3장. 함수 객체 내돈내고 내가 공부한 것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼 겸 가볍게 포스팅하겠습니다. 1) 3장. 함수 객체 함수 객체는 함수처럼 동작하는 객체이다. 이는 () 연산자를 오버로딩한 객체이어야 한다. 또한 함수 객체를 Funtor라고 부르기도 한다. 함수를 두고 왜 함수객체를 사용하는 것 일까? 함수 객체는 근본이 객체이다. 멤버 변수와 멤버 함수를 가질 수 있고, 함수 객체의 signature가 같더라도 객체 타입이 다르다면 다른 타입으로 인식한다. 또한 인라인 될 수 있기에 일반 함수보다 빠르다. 다음 코드를 통해 알아보자. #include using namespace std; class Adder { int m_total; public: explicit Adder(int n = 0) .. CS/C++ 2022. 1. 18. 뇌를 자극하는 C++ STL : 2장. 함수 포인터 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 2장. 함수 포인터 함수 포인터는 함수의 주소를 저장하는 변수이다. 함수의 이름이 주소인것 또한 C언어 공부할때 배운것이 생각난다. 정적 함수 호출 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 - 정적함수 : 전역함수, namsspace내의 전역함수, static 멤버함수 다음 코드는 정적함수를 호출하는 방식이다. #include using namespace std; void Print(int n) { cout HTML 삽입 미리보기할 수 없는 소스 - 클라이언트가 서버를 호출하면 call, 서버가 클라이언트를 호출하면 callback - 서버가 여러 클라이언트에 의.. CS/C++ 2022. 1. 18. 뇌를 자극하는 C++ STL : 1장. 연산자 오버로딩 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 가겹게 포스팅 하겠습니다. 1) 1장. 연산자 오버로딩 이번 단원에서는 연산자 오버로딩에 대하여 컴파일러가 어떻게 해석하는지를 주로 배웠다. 이전에 따배씨쁠쁠에서 한번 싹 배운내용긴 하지만 복습겸 정독하였고, 또한 함수 호출 연산자 오버로딩을 집중하여 공부하였다. 함수 호출 연산자 오버로딩( () 연산자 ) " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 함수 호출 연산자는 객체를 함수처럼 동작하게 하는 연산자 입니다. 객체를 함수처럼 동작하게 하기 위해서는 호출연산자 "()" 를 정의해줘야 한다. 따배씨쁠쁠에서 배웠던 functor(함수 객체) 를 말한다. #include using namespace.. CS/C++ 2022. 1. 18. C++ 공부 섹션11 상속 : 홍정모의 따배씨쁠쁠 내돈내고 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1) 섹션11 처음 상속을 배웠는대 약간 복잡성이 더해진 class인것 같다. 뇌를 자극하는 재미가 있는 단원인것 같다. 글을 다 쓰고나니 진짜 내 영혼을 갈아넣은듯한 느낌으로 포스팅 하였다. 누가보든 C++ 이전내용의 기반이 있다면 이해가능하도록 하나하나 서술하였다. ◆ 이번시간에는 상속(inheritance)에 대하여 집중적으로 배웠다. 효율적인 class의 사용법이며, 숙련되면 초기부터 디자인할때 상속관계를 생각하면서 구성한다 알려주셨다. ◆ 11-1 상속의 기본 (1/2) #include using namespace std; class Mother { int m_i; p.. CS/C++ 2022. 1. 16. C++ 공부 섹션10 객체관계 : 홍정모의 따배씨쁠쁠 내돈내고 내가 공부한것을 올리며, 시간을 들여 배운과정을 복습하기보다는 간결히 공부한 흔적은 남긴다 하고 생각하고 써갈 예정입니다. 모든 내용을 이곳에 올릴수는 없으며, 그중 기억남은 몇가지 내용 위주만 올리겠다. 1) 섹션9 확실히 생각을 다시 곱씹어가며 한줄 한줄 블로그에 정리하며 공부하는 것 크게 도움되는 것 같다. 이번 시간에는 객체지향에 대한 보편적인 사용법과 방식들을 공부하게 되었다. class와 object들의 관계를 위주로 배우게 되었다. ◆ 10-1 class에는 크게 4가지의 관계들이 있었다. 구성, 집합, 연계, 의존 관계가 있었으며 각각에 대해서는 코드를 보면 더욱 명확히 히해할수 있다. 간단히 실생활 예로 먼저 생각해보면, 1. 구성: 뇌(부품)와 사람(전쳬) 에서는 뇌가 사람의.. CS/C++ 2022. 1. 16. C++ 공부 섹션9 연산자 오버로딩 : 홍정모의 따배씨쁠쁠 내돈내고 내가 공부한것을 올리며, 시간을 들여 배운과정을 복습하기보다는 간결히 공부한 흔적은 남긴다 하고 생각하고 써갈 예정입니다. 모든 내용을 이곳에 올릴수는 없으며, 그중 기억남은 몇가지 내용 위주만 올리겠다. 1) 섹션9 이번시간에는 연산자 오버로딩에 대하여 배웠다. 함수오버로딩과 마찬가지로, 같은 연산자를 다르게 사용하는 방식이다. 원래 블로그에 자세한 정리글을 안올리는대 이번단원이 잘 이해가지 않아 하나하나 다시 뜯어가면서 설명하듯 글을 작성하였다. 이번단원이 강좌들의 시간은 짧았음에도 불구하고 은근 어려운 부분이 많은 단원 이였다. ◆ 9-1 산술 연산자 오버로딩 산술 연산자의 오버로딩에서는 총 4가지 방식을 통해 오버로딩이 어느 순간에 필요한지를 점차 알려주셨다. 방법 1) class 밖에 .. CS/C++ 2022. 1. 16. C++ 공부 섹션8 : 홍정모의 따배씨쁠쁠 내돈내고 내가 공부한것을 올리며, 시간을 들여 배운과정을 복습하기보다는 간결히 공부한 흔적은 남긴다 하고 생각하고 써갈 예정입니다. 모든 내용을 이곳에 올릴수는 없으며, 그중 기억남은 몇가지 내용 위주만 올리겠다. 1) 섹션8 드디어 손꼽아 기다리던 객체지향에 대하여 공부할 수 있었다. 먼저 명품 C++ 에서 3단원인 객체지향을 읽어본후 강의 까지 듣느라 시간이 좀 걸렸다. 내일도 진도를 나가기 보단 복습과 LearnCPP를 읽고 예제문제를 풀어볼 생각이다. ◆ class에서 constructor를 만들때 다음 사진과 같이 default값을 지정해줄 수 있었다. ◆ 또한 초기화를 할때 constructor를 사용할때 값의 대입이 아닌, 멤버 초기화 목록을 사용할 수 있었다. ◆ 위임생성자는 다른 생성자.. CS/C++ 2022. 1. 16. C++ 공부 섹션7 : 홍정모의 따배씨쁠쁠 내돈내고 내가 공부한것을 올리며, 시간을 들여 배운과정을 복습하기보다는 간결히 공부한 흔적은 남긴다 하고 생각하고 써갈 예정입니다. 모든 내용을 이곳에 올릴수는 없으며, 그중 기억남은 몇가지 내용 위주만 올리겠다. 1) 섹션7 이번단원에서 가장 흥미로웠던 주제는 함수의 오버로딩이다. 같은 함수명임에도 불구하고 다른 기능으로 사용할수 있다니. 정말 편리한 것이 아닌가 싶다!! ◆ 참조형을 반환값으로 사용하는 예를 볼 수 잇었다. 위의 사진에서는 반환값을 참조형으로 하여 값을 수정하는 예를 보이고 있다. 우선 메모리를 main함수 안에서 정의하여 get함수가 실행된후 stack에서 사라지는 오류를 피한다. 또한 get에서 my_array[ix]의 별명을 반환하고 있는것이다. 그 별명에 1024를 대입하니 원.. CS/C++ 2022. 1. 16. C++ 공부 섹션6 : 홍정모의 따배씨쁠쁠 내돈내고 내가 공부한것을 올리며, 시간을 들여 배운과정을 복습하기보다는 간결히 공부한 흔적은 남긴다 하고 생각하고 써갈 예정입니다. 모든 내용을 이곳에 올릴수는 없으며, 그중 기억남은 몇가지 내용 위주만 올리겠다. 1) 섹션6 초중반부 까지의 포인터와 배열은 어렵지 않았는대 뒤에 for_each문 나오는 부분부터 조금 이해가 안갔다. 생소해서 사용법이 익숙하지 않은 것 같다. 내일은 진도를 빼지말고 섹션6의 후반부를 조금더 복습해야 겠다. ◆ enum을 배열에서 활용하는 방식이 독특하여 캡쳐해 두었다. enum 마지막 element로 NUM_STUDENTS가 있는대 이를 전체 학생수로 활용할 수 있었다. main에서 배열을 이를 활용하여 선언하는 것 을 볼수 있었다. ◆ 뭐 당연한거기는 한대 arra.. CS/C++ 2022. 1. 16. 이전 1 2 3 4 다음