목록프로그래밍언어 (95)
nakka soft world !
상속(inheritance)의 개념 객체지향 프로그래밍의 3가지 특징은 "캡슐화(encapsulation)", "상속성(inheritance)", "다형성(polymorphism)"입니다.// Base, Superclass People{string name;int age;};// Derived, Sub classclass Student : public People // 상속(inheritance){int id;};class Professor : public People{ int major;};int main(){} class Base{private:int a; // 자신의 멤버 함수와 friend함수만 접근 protected:int b; // 자신의 멤버 함수와 friend함수만 접근 // 파생클래스의 ..
STL 설계 철학 컨테이너(자료 구조)listvectortreehash 반복자(iterator)컨테이너의 내부구조에 상관없이 동일한 방식으로 요소를 열거--------------------------------------> 알고리즘(일밤함수)선형검색이진검색정렬순열 정책변경함수, 함수객체, 람다 표현식
알고리즘의 정책 변경 1. 함수, 함수 객체, 람다 표현식 #include #include #include #include // STL의 함수 객체 사용 using namespace std; bool compare( int a, int b) ( retrun a > b; } int main(){vector v = {1,2,3,4,5,6,7,8,9,10}; sort(v.begin(), v.end()); // 크기비교 < for (auto n : v)cout
STL 알고리즘 ( algorithm ) 1. 일반 함수 #include #include #include #include using namespace std; int main(){list s = {1,2,3,4,5,6,7,8,9,10}; vector v = {1,2,3,4,5,6,7,8,9,10}; //s.find(5);//v.find(5); // 같은 알고리즘을 컨테이너마다 가지고 있어야 하나는 의문으로 멤버 함수로 있지 않고 일반 함수로 있음. // 핵심 1. 멤버 함수가 아니고 일반함수 이다. find(s.begin(), s.end(), 5);find(v.begin(), v.end(), 5); } 2. 검색 리턴 값 int main(){vector v = {1,2,3,4,5,6,7,8,9,10};v..
반복자 (STL iterator) 1, 개념 #include #include using namespace std; int main(){int x[10] = { 1,2,3,4,5,6,7,8,9,10}; //배열 int* p = x;++p;cout
컨테이너 (Container)array, vector, list, deque, set, Map, unorder_set, unordered_map, stack, queue// STL의 vector는 앞에 요소를 삽입하거나 삭제 할수 없습니다. 1. 특징#include #include #include // 배열과 유사한 자료구조, 연속된 메모리using namespace std; int main(){list s;vector s; // 함수 이름은 변하지 않기에 자료 구조 형만 변경해주면 됨. s.push_back(1);s.push_back(2);s.push_back(3); int n = s.pop_back(); // error. 제거만 하고 리턴안함 int n = s.back(); // ok 리턴만 제거안됨..
STL (Standard Template Library) 1. 소개C++ 98/03 STL 처음 소개됨 자료구조를 나타내는 컨테이너, 알고리즘 함구, 반복자, 함수 객채등 C++ 11/14멀티 쓰레트, atom, 스마트 포인터, regex, function, bind C++ 17/20Boost 라이브러리 내용이 많이 추가됨filesystem, optional, string_view, arry_view, range
String 클래스 만들기 (making String) 1. 기능 정의 #include using namespace std; int main(){String s1 = "hello";cout
대입연산자 (assignment operator) 1. 개념 class Point{private:int x, y;public:Point(int a = 0, int b = 0) : x(a), y(b) {}void print() const { cout
스마트 포인터 (Smart Pointer) 다른 타입의 포인터 역활을 하는 객체를 smart pointer 라고 합니다.-> 연산자와 * 연산자를 재정의해서 다른 타입의 포인터 역활을 하는 객체를 무엇이라고 하나요(영어, 소문자로 적어 주세요) ? 스마트 포인터 1. 개요 class Car{private:int color;public:~Car() { cout ())->Go// ( 2000 ) ->Go(*p).Go(); // p.operator*() // Block 을 벗어 날때 Ptr의 소멸자가 호출됨., 소멸자에 delete해두면 굳이 delete하지 않아도 자동으로 관리가 됨. } // 임의의 개체가 다른 타입의 포인터 역할을 하는 것// 대부분의 스마트 포인터는 참조 계수 기법을 사용합니다. 또한,..