포인터란 우리가 컴퓨터 구조시간에 배웠던것처럼, 코딩 과정에서 선언하는 모든 변수는 메모리에 저장이 되고 그 메모리에는 주소형태로 올라가게 된다. 주소는 운영체제의 32비트 혹은 64비트에 맞춰서 작동하며 현재 대부분의 컴퓨터를 차지하는 64비트의 경우 64비트 8바이
분명 포인터만 정리하고 안하려고했는데 구조체를 만나서 이것도 정리할겸 글을 하나 더 쓰기로 하였다. 파이썬에서도 쓸수는 있는 기능이라고 알고있는데 한번도 써본적이 없고, 자바의 class랑 매우 비슷하다고 생각된다. 우선 기본 사용예부터 보겠다. 책 제목、작가, 출판사
C를 학습할 때, \*는 포인터 혹은 포인터 안의 값, &는 변수의 주소를 의미한다고 배웠을것이다. 근데 cpp를 해보니 거기서도 int& a같이 쓰는데 또 이는 레퍼런스라고 한다. 도대체 뭘까 해서 찾아보니, 그냥 쓰기 나름인거였다. 레퍼런스란, 쉽게 설명해서 특정
이 글은 https://modoocode.com/ 님의 블로그를 보고 학습한 내용을 정리한 글입니다. Class C에서 Struct를 통해 무언가를 묶어놨다면, CPP에서는 Class를 통해 무언가를 묶어둘 수 있다. 예를 들어 스타크래프트라는 게임을 보겠다. 그 안
Pyhton을 하다가 c/cpp로 넘어오면 가장 불편한게 아마 연산자 아닐까 싶다. 파이썬에서는 사실상 못쓰는 연산자는 ++ -- 말고는 없다.Str끼리 ==으로 비교도 가능하고, 논리연산자도 and or같은 단순한 단어로 바꿔쓸 수 있고, 심지어는 0 <= x
String을 마음대로 쓸 수 있는 파이썬이나 비교적 자유로운 자바에 비해 C에서의 String은 복잡하기 짝이없다. C에서는 char array로 받아야하고 마지막에 null을 추가해서 끝을 표기해야한다. CPP에서는 직접 MyString 클래스를 만들어서 쓸 수 있
우리가 부모님으로부터 재산을 상속받는것처럼, 객체지향프로그래밍 언어들의 class 역시 상속을 받을 수 있다. 클래스가 다른 클래스를 상속하기 위해서는 그 옆에 : public classname 을 적어주면 된다. 위의 코드의 경우 실행을 하면 같은 결과를 가지게 된
상속은 단순히 ctrl + c, v 용도로 쓰이는것은 아니다. 어떠한 클래스가 다른 클래스를 상속한다는것은 그 속성을 모두 이어받는다는 뜻이고 그에 따른 성질을 가진다. 이전글 마지막에 사용된 예제처럼 같은 경우 Manager 클래스는 Employee의 모든 기능을
이 강의를 보고 배운내용을 정리하였습니다.다음과 같은 코드가 있다고 하자. 이는 string 자료형에 대응하는 벡터이다. 만약 이를 다른 자료형으로 쓰려한다면, class를 다시 선언해야 할 것이다. 코딩할 때 제일 많이 듣는 말중 하나가 중복을 줄이자 이다. 이러한
파이썬의 가장 강력한 기능중의 하나는 같이 여러개를 동시에 출력하는 기능이다.놀랍게도, cpp에서도 같은걸 가변길이 템플릿을 이용해서 구현할 수 있다. typmename 뒤에오는것들은 template parameter pack, 인자로 오는 ...은 함수 paramet
파이썬의 가장 강력한 기능중의 하나는 같이 여러개를 동시에 출력하는 기능이다.놀랍게도, cpp에서도 같은걸 가변길이 템플릿을 이용해서 구현할 수 있다. typmename 뒤에오는것들은 template parameter pack, 인자로 오는 ...은 함수 paramet
cpp의 표준 라이브러리에는 iostream, chrono, regex등 다양한 라이브러리들이 있고 이들은 매우 유용하지만, 보통 STL이라 한다면, 임의 타입의 객체를 보관할 수 있는 컨테이너 (container)컨테이너에 보관된 원소에 접근할 수 있는 반복자 (it
영어로 제목적으니 있어보인다지난시간에 학습한 sequence container들은 말 그대로 원소를 보관하는 컨테이너 였다면 이번에 공부할 내요은 연관컨테이너이다. 쉽게 설명하면 파이썬의 맵 기능이라고 보면 될듯하다pyhton의 set과 같은 역할을 수행한다. 추가 혹
그런 기능을 수행한다. sort = 일반적인 정렬 stable_sort= 안정적인 정렬(정렬해도 순서는 유지댐) partial_sort = 부분정렬 sort는 begin(), end()를 인자로 받아서 작동하는데, 리스트는 이렇게 정렬 할 수 없다. 이는 sort의 반
c에서는 사실 별도의 예외처리가 존재하지 않았따. 그냥 결과값이 이러면 어떻게 해달라는 if문을 작성했다. 다만 이러한방식은 코드가 복잡해지면 복잡해질수록 작성하기 어려워지고 코드 또한 지저분해진다. cpp에서는 예외가 발생하면 throw문을 사용해서 예외발생을 명시적
복사 생략 (copy ellision) 다음과 같은 코드가 있다고 할 때, 원래대로 생각해보면 A(2)를 통해 일반생성자 객체가 생성되고, 그 객체를 A c()가 받아서 복사생성자가 생성될것만 같다. 하지만 실제로 컴파일해보면 같은 결과가 나온다. 이는 컴파일러가
기초내용을 복습해볼겸 교수님이 운영하시는 주니온TV를 보고 내용을 정리해보았다.vscode로 cpp코딩하는법은 이 글을 보고 따라해보자이렇게하면 입출력이 된다는것은 모두가 알 것이다. 근데 가끔 알고리즘 문제를 풀다보면 시간초과가 발생한다. 왜?cout, cin, en
CPU의 이해 컴퓨터 구조를 들은 사람은 알겠지만, cpu안에 있는 하나의 코어는 하나의 작업밖에 하지못한다. 따라서 작업 스케쥴링을 통해 작업을 순서대로 조금씩 번갈아가면서 수행한다. 스케쥴링 원리는 이 글을 참고하자. 이러한 작업은 사실 ㅇ리가 따로 관리안해도

2011년에 출시된 cpp 11에 thread 클래스와 헤더가 추가되면서 쓰레드를 쓸 수 있게 되었다. 근데 2022년에 코딩하는 나는 안되고있었다...라는 이름의 에러였는데, 문제는 이 에러 솔루션들은 대부분 2011년 이전이나 막 thread가 막 업데이트 된 당시