일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- LLM
- 오블완
- Machine Learning
- OpenAI
- gpt
- ChatGPT
- 딥러닝
- 분류
- 해커톤
- Classification
- LG
- 티스토리챌린지
- LG Aimers 4th
- regression
- GPT-4
- 지도학습
- AI
- deep learning
- supervised learning
- 머신러닝
- 회귀
- LG Aimers
- PCA
- Today
- Total
목록분류 전체보기 (338)
SYDev
표준 string 클래스의 분석 표준 string 클래스의 분석을 위해서 자체적으로 String 클래스를 정의해보자. 문자열을 인자로 전달받는 생성자 정의 string 객체를 생성할 때 다음 방식을 사용했는데, string str1 = "I like "; 위 코드는 다음과 같이 해석되므로 string str1("I like"); 문자열을 전달받는 적절한 생성자를 정의해야 한다. (선언과 초기화가 분리되지 않았으므로, 대입 연산자가 아닌 생성자 호출) 생성자, 소멸자, 복사 생성자 그리고 대입 연산자의 정의 string 클래스는 문자열을 저장 및 표현하는 클래스인데, 전달받는 문자열의 길이가 일정하지 않다. 때문에, 생성자에서 동적 할당을 진행하고 이에 따라 소멸자에서 메모리 해제를 해야 한다. 이에 따라..
표준 string 클래스 string 클래스는 C++ 표준 라이브러리에 정리된 클래스 중 하나로, 문자열의 처리를 목적으로 정의된 클래스이다. 헤더파일 을 포함해야 사용할 수 있음 다음은 string 클래스의 사용 예시이다. #include #include using namespace std; int main(void) { string str1="I like "; string str2="string class "; string str3=str1+str2;//operator+의 오버로딩으로 객체간 덧셈연산 cout
배열 클래스 C와 C++의 기본 배열은 경계검사를 하지 않는다. 따라서, 다음과 같은 범위를 벗어나는 코드가 컴파일, 실행이 무리없이 진행되는 문제가 생긴다. int main(void) { int arr[3]={1, 2, 3}; cout

대입 연산자 대입 연산자(=)의 특성은 복사 생성자의 특성과 비슷하므로, 함께 나열하며 설명하겠다. 우선 복사 생성자의 대표적 특성이다. 정의하지 않으면 디폴트 복사 생성자가 삽입된다. 디폴트 복사 생성자는 멤버 대 멤버의 복사(얕은 복사)를 진행한다. 생성자 내에서 동적 할당을 한다면, 그리고 깊은 복사가 필요하다면 직접 정의해야 한다. 다음은 대입 연산자의 대표적 특성이다. 정의하지 않으면 디폴트 대입 연산자가 삽입된다. 디폴트 대입 연산자는 멤버 대 멤버의 복사(얕은 복사)를 진행한다. 연산자 내에서 동적 할당을 한다면, 그리고 깊은 복사가 필요하다면 직접 정의해야 한다. 또한, 다음 상황에서는 복사 생성자가 호출되지만, int main(void) { Point pos1(5, 7); Point po..
cout, endl의 이해 cout와 endl의 이해를 위해 예제 하나를 살펴보자. #include namespace mystd { using namespace std; //printf 함수의 호출을 위해 선언 class ostream { public: void operator
메모리 버퍼(문자형 큐) 표준 입출력 함수를 통해서 데이터를 입출력할 때, 그 데이터들은 운영체제가 제공하는 메모리 버퍼를 통과하게 된다. 메모리 버퍼: 데이터를 임시로 모아두는 메모리 공간, 표준 입력 함수는 입력 버퍼를 거치고 표준 출력 함수는 출력 버퍼를 거친다. 작동 순서: 키보드에 데이터 입력 -> 메모리 버퍼(입력 버퍼)에 저장(버퍼링) -> 프로그램에 전달 외부 장치와의 데이터 입출력은 생각보다 시간이 오래 걸리기 때문에, 효율적으로 데이터를 전달하기 위해서 입출력되는 데이터는 메모리 버퍼를 거친다(데이터를 하나씩 전달하기보다는 메모리 버퍼에 모아뒀다가 한 번에 전달하는 것이 효율적). fflush 함수 아직 파일에 쓰이지 않은 버퍼의 내용을 커널에 전달해주는 함수. #include int ..
함수 포인터 포인터 변수가 변수가 저장된 메모리의 주소를 가리키듯이, 함수 포인터 변수는 함수가 저장된 주소를 가리킨다. 함수 포인터 선언 방식은 다음과 같다. void (*FuncPtr)(int n)//함수의 반환형 (*함수 포인터 이름)(매개변수) 함수 포인터 변수의 초기화에는 다음과 같이 &연산자를 사용하지 않은 함수를 그대로 이용한다. #include using namespace std; void MyFunc(int n) //함수 포인터와 반환형, 매개변수 타입 맞춰야 함 { cout
학습 목표 프로그램 속 명령어와 데이터는 실행 전후로 레지스터에 저장되므로, 레지스터만 잘 관찰해도 CPU가 돌아가는 상황을 어느정도 파악할 수 있다. 이런 레지스터의 종류와 역할을 학습하고, 각 레지스터를 통해 명령어가 처리되는 과정을 이해해보자. 주요 레지스터 8종 프로그램 카운터: 메모리에서 가져올 명령어의 주소를 저장, 명령어 포인터(IP; Instruction Pointer)라고도 불림 명령어 레지스터: 메모리에서 가져온 명령어를 저장 메모리 주소 레지스터: 메모리의 주소를 저장, CPU에서 주소 버스로 보내기 전 거치는 레지스터 메모리 버퍼 레지스터: 메모리와 주고받을 데이터와 명령어를 저장, 데이터 버스로 이동하기 전 거치는 레지스터 프로그램 카운터에 저장된 명령어의 주소 -> 메모리 주소 ..