강의 60

[ComputerScience] c++의 Class와 Class Template

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번 시간에는c++에서 ₩class와class template에 대해서배운 내용에 대해서 정의해보려고 한다 우선 c++의 개발자Bjarne Stroustrup의Why I created C++영상을 보면c++을 왜 만들었는지에 대한이야기가 나오는데c에는 없는 class의 개념을도입하기 위해서 만들었다고한다  Simula라는 언어에서class의 개념을 가져온 뒤c의 빠른 속도와 class의 개념을 결합시킨언어를 만들기 위해서c++을 개발했다고한다 c에서는 structure라는 개념이 있는데이를 c++에서 object의 개념으로 확장시켰다고한다  Classclass란 무엇일까 아마 객체지향..

[ComputerScience] c++의 function overloading

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번 시간에는 c++에서함수를 다룰 수 있는 다양한 방법들과function overloading에서 대해서배운 내용을 정리해보려고한다 Default Arguments in Functions  우선 c++에서는 함수의 인자값를default로 설정할 수 있다 함수를 호출 할 때두 번째 인자값을 넘겨주면넘겨준 값으로 들어가지만아무것도 넘겨주지 않는다면default로 설정해둔 2가 들어가게 된다  Function OverloadingC에서는 같은 함수의 이름을여러 개 사용할 수 없었지만c++은 가능하다 이런걸 function overloading이라고 한다   이름이 같은 함수들을오른쪽과 같..

[ComputerScience] c++의 pointer와 reference 3편 (Call by Value, Call by Reference, Reference)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.c++에서의 Pointer와 Reference마지막 편 Call by ValueCall by Reference와마지막으로c++에서의 Reference에 대해정리해보도록하겠다  Call by Value  위 ppt의 코드를 잘보자mySwap이란 함수에서x와 y를 파라미터로 받고함수 내부에서 x와 y의 값을서로 바꿔준다 그런 다음 main함수에서int a와 b를 선언해준뒤mySwap 함수의파라미터로 넣어준뒤 a와 b를 출력해본다 mySwap 함수 내부에서는두 파라미터의 값을 서로 교환해주니main함수에서 정의된 a와 b를mySwap에 넣어주면a와 b의 값이 변할까? 정답은 변하지 않는다왜..

[ComputerScience] c++의 pointer와 reference 2편 (Dynamic Array, Static Array, Smart Pointers)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.pointer와 reference는관련 내용이 깊고자세하게 설명해야할게 많아서나누다보니 3편까지 작성해야할 것 같다 1편에서는 pointer의 정의, 사용법,동적 메모리 할당 등에 대해서 배웠다 이버에는 포인터 변수를 이용해서동적으로 배열을 할당하고그걸 어떻게 이용하는지 알아보자  Dynamic Array  위 코드를 보면int *arr = new int[3]{1, 2, 3};이렇게 포인터 변수 arr를 동적으로 할당했다 위 코드가 무슨 뜻이냐하면어떤 메모리 주소에int가 3개 들어갈 수 있는공간을 할당하겠다는 뜻이다 new로 동적 할당이 끝나면arr는 첫번째 원소의 위치를 반환하게된..

[ComputerScience] c++의 pointer와 reference 1편 (포인터의 정의, 동적 메모리 할당, 포인터 연산)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.이번시간에는 c언어의 꽃이라고 할 수 있는포인터에 대해서 배운 내용을 정리해보려한다 포인터는 c언어의 꽃이지만강의 내용이 c++로 이루어지기에c++과 함께 포인터 변수에 대한 내용을 정리하고c++에만 있는 reference에 대해서도배운 내용을 정리해보려한다   c나 c++에서는 변수가 선언이 될 때그 변수를 위한 공간이 메모리에 생성이된다메모리에 특정 변수를 위한 공간이 생성이되면그 공간에 대한 정보인 주소가 존재할텐데이 주소를 변수의 이름과 associate를 해서변수 이름을 이용해 그 메모리 주소를찾아갈 수 있도록 하는 것이다이러한 것을 변수 선언이라고 부른다 위의 ppt에 있는..

[ComputerScience] c++의 map과 set

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.저번시간엔 c++의 list에 대해서 정리해보았고오늘은 map과 set 대해서 정리해보려한다  Map  map은 python의 dict와 비슷하다고 볼 수 있는데key-value가 서로 associate되어있는 구조이다 key들은 모두 unique하며각 element들은 key들의 ascending order로sort 되어있다 hash table과는 완전히 다른 구조이다  map은 내부 구조로balanced binary search tree를 갖고있다 각 node들은 Key-value pair인std::pair 오브젝트로 구현되어있다 balance tree이기 때문에tree의 차수가 ..

[ComputerScience] c++와 list

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.저번시간에는 vector에 대해 공부했고이번 시간에는 list에대해 정리해보려한다  c++의 list는 python의 List와는 다르다python의 list와 비슷한건 c++의 vector이다c++의 list는 python의 list와는 다르게non-contiguous(비연속) memory 구조이다 메모리 공간을 비연속적으로 할당받으니linked list처럼 다음 element의 위치정보를담는 pointer를 갖고있어야한다 c++의 List는이전 element와 다음 element까지2개의 포인터를 갖고있다 따라서 어느 위치에서나insertion과 deletion이 가능하지만rand..

[ComputerScience] c++의 vector

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.Container element들을 담고있는 data structure들을c++에서 지원하는데 이런 것들을 container라고 부른다보통 vector, list, map, set, deque 등등이 있다  이 게시글에서 배워볼 것은 vector vector vector는 python의 list와 비슷하다element들이 array처럼연속적인 저장소에 저장되어있으며random access가 가능하다(index로 접근 가능) 그리고 요소들의 중간에insertion과 deletion은 어렵겠지만맨 뒤에 insert와 delete하는 것은 쉽다 element들이 계속 들어와서 현재 갖고있는..

[ComputerScience] c++의 file I/O Streams와 string

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.저번시간은 c++의 입출력 시스템인std::cin과 std::cout에 대해서 배웠었다 이번 시간에는c++의 File I/O Streams에 대해 배워보자 c++의 File I/O Stream는ifstream, ofstream을 사용한다ifstream이 Input file systemofstream이 output file system이다 헤더에는 #include 을 정의해줘야사용할 수 있고standard I/O Stream과 비슷한 방식으로사용된다고한다  File Read std::ifstream file(PATH)로 파일 변수를 선언해준다이렇게 선언하면 읽어올 파일의 변수명은 fil..

[ComputerScience] c++의 I/O Streams (cin, cout)

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다. c++의 cin과 cout같은 I/O Streams는input과 output을 도와주는 프레임워크이다 실제로 컴퓨터에서 input과 Output은밑바닥에서 굉장히 복잡한 과정이 일어나는데사용자는 이를 알지못해도 입출력 기능을 사용할 수 있도록 해주는 것이다  cin  c++에서 input을 도와주는 오브젝트이다일반적으로 키보드를 이용해서 입력한다 사용자가 키보드로 입력을 해서입력한 내용을 프로그램 안으로 가지고가는 부분이다 위 ppt 그림에서 수도꼭지에서 물이 나오는 부분이cin이라고 이해하면 좋다 수도꼭지를 트는 레버(?)는cin >> input할거... 에서 >> 의 역할이다 >..