전체 글 103

[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..

[c++] gcc 컴파일러로 여러 개의 c++ 파일 link해서 컴파일하기

이번에 c++ 과목 과제를 하면서교수님이 알려주신대로 gcc 컴파일러를 통해컴파일을 하는데 자꾸 ld: symbol(s) not found for architecture arm64clang: error: linker command failed with exit code 1 (use -v to see invocation)이 에러가 뜨는 것이었다 열심히 구글링을 해보니main함수가 있는 c++ 파일에다른 여러 c++ 파일들을 include 해줬는데이게 뭐 자체적으로 link가 되지않아 생기는 에러인 듯 했다 해결법은 초특급 간단하다 당연하겠지만 헤더에#include를 이용해서 가져올 다른 cpp파일을 입력해줘야한다그리고 저 cpp파일들은 같은 폴더 안에 있어야한다 그런 다음기존에 gcc 컴파일러로 컴파일하기..

기술/기타 2024.09.22

[ssh] ssh public key 로컬에 생성하기

AWS 서버에 접근하기 위해서나의 ssh public key가 필요로했다 ssh key는 주로 Git이나 AWS같은원격 서버에 접근해야하는 상황에서비밀번호대신 많이 쓰인다 나는 기존에는 없었으므로 새로 생성해주었다생성하는 방법은 매우 간단하다나는 Mac을 사용하므로MacOS 기준이다 우선/ .ssh 폴더에id_xxxxid_xxxx.pub이런 파일 2개가 존재하는지 확인해주자 존재한다면 이미 ssh key를로컬에 갖고이쓴 것이다 cat /.ssh/id_xxxx.pub 위 명령어를 통해 공개키를 확인해주면된다만약 없다면 새로 생성하면된다 ssh-keygen 위 명령어를 terminal에 쳐주면위와 같이해당 경로에 ssh key를 저장하겠다고 알려준다저 곳에 저장해주기 위해서 enter를 눌러준다  enter..

기술/기타 2024.09.22

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

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

[ComputerScience] C++과 Namespace

이 게시글은서울대학교 데이터사이언스대학원조요한 교수님의데이터사이언스 응용을 위한 컴퓨팅 강의를학습을 위해 재구성하였습니다.C++을 처음배울 때 흔히 가장 많이 배우는 것이입력과 출력문 일 것이다#include int main(void) { std::cout  c++에서의 출력은 주로 std::cout 이런 방식으로 많이 사용하고입력을 받으려면std::cin과 같은 방식으로 많이 사용한다 cout과 cin 앞에 붙이는 이 std의 정체는대체 무엇일까 이걸 이해하려면 c++에서의namespace 개념을 이해해야한다  Namespace cin과 cout은 이미 c++ 내부에 정의되어있는 변수이다한마디로 c++을 개발하면서 이미 입력과 출력 기능을사용할 수 있도록 predefined 해놓은 변수라는 뜻이다..