CS
-
lvalue와 rvalue, 그리고 move에 대한 개념은 C++에서 객체와 리소스 관리를 이해하는데 중요하다. 이들 각각의 개념을 메모리 관점에서 살펴보자 lvalue (Left Value) lvalue는 메모리에 지속적으로 위치한 객체를 나타낸다. lvalue는 변수 이름과 같이, 메모리 주소를 가지고 있어 해당 주소에 접근하거나 값을 변경할 수 있다. 예를 들어, int x = 10;에서 x는 lvalue다. rvalue (Right Value) rvalue는 일반적으로 임시 객체나 값으로, 메모리에 지속적인 위치를 가지지 않는다. rvalue는 일반적으로 표현식의 결과나 리터럴 값 등으로 생성되며, 그 수명은 매우 짧다. 예를 들어, 5, x + y, std::move(x) 등은 rvalue이다...
lvalue, rvalue, move 그리고 RVOlvalue와 rvalue, 그리고 move에 대한 개념은 C++에서 객체와 리소스 관리를 이해하는데 중요하다. 이들 각각의 개념을 메모리 관점에서 살펴보자 lvalue (Left Value) lvalue는 메모리에 지속적으로 위치한 객체를 나타낸다. lvalue는 변수 이름과 같이, 메모리 주소를 가지고 있어 해당 주소에 접근하거나 값을 변경할 수 있다. 예를 들어, int x = 10;에서 x는 lvalue다. rvalue (Right Value) rvalue는 일반적으로 임시 객체나 값으로, 메모리에 지속적인 위치를 가지지 않는다. rvalue는 일반적으로 표현식의 결과나 리터럴 값 등으로 생성되며, 그 수명은 매우 짧다. 예를 들어, 5, x + y, std::move(x) 등은 rvalue이다...
2023.10.31 -
다형성과 동적 바인딩 런타임에 적절한 함수를 호출하는 데는 가상 테이블(vtable)과 가상 포인터(vptr)라는 메커니즘이 사용된다. 이러한 메커니즘은 다형성을 구현하고 런타임에 객체의 실제 타입을 기반으로 올바른 함수를 호출할 수 있게 해준다. 아래에서 이 메커니즘이 어떻게 작동하는지 간략하게 설명 가상 테이블(vtable): 각 클래스에 대해 컴파일러는 가상 테이블을 생성. 가상 테이블은 클래스의 가상 함수에 대한 포인터를 저장하는 테이블이다. 각 가상 함수에 대해 하나의 항목이 있으며, 이 항목은 해당 함수의 주소를 저장한다. 가상 테이블(vtable): 각 클래스에 대해 컴파일러는 가상 테이블을 생성. 가상 테이블은 클래스의 가상 함수에 대한 포인터를 저장하는 테이블이다. 각 가상 함수에 대해 ..
다형성, virtual, override, virtual table, 동적 바인딩다형성과 동적 바인딩 런타임에 적절한 함수를 호출하는 데는 가상 테이블(vtable)과 가상 포인터(vptr)라는 메커니즘이 사용된다. 이러한 메커니즘은 다형성을 구현하고 런타임에 객체의 실제 타입을 기반으로 올바른 함수를 호출할 수 있게 해준다. 아래에서 이 메커니즘이 어떻게 작동하는지 간략하게 설명 가상 테이블(vtable): 각 클래스에 대해 컴파일러는 가상 테이블을 생성. 가상 테이블은 클래스의 가상 함수에 대한 포인터를 저장하는 테이블이다. 각 가상 함수에 대해 하나의 항목이 있으며, 이 항목은 해당 함수의 주소를 저장한다. 가상 테이블(vtable): 각 클래스에 대해 컴파일러는 가상 테이블을 생성. 가상 테이블은 클래스의 가상 함수에 대한 포인터를 저장하는 테이블이다. 각 가상 함수에 대해 ..
2023.10.31 -
어떤 알파벳에 몇 번 나오는지로 출력 예시) aaabbccdddeeeff -> a3b2c2d3e3f2 알파벳은 총 26 글자 // 풀이 1. 모든 알파벳에 대해서 Count() // 힌트: 소문자 알파벳 'a'~'z'는 int로는 97~122에 대응 // 단점: 없는 알파벳도 세야 한다. // 표를 사용할 수도 있고 사용하지 않을 수도 있음 int table[26] = { 0 }; // 모든 값을 0으로 초기화 for (int i = 0; i < 26; i++) { // 힌트: char(i + 97) // 표를 만들고 나중에 몰아서 출력하는 방법 // table[i] = ... table[i] = Count(arr, n, i + 97); // 표를 만들지 않고 직접 출력하는 방법 // ... int co..
문자열 압축 문제 (String Compression)어떤 알파벳에 몇 번 나오는지로 출력 예시) aaabbccdddeeeff -> a3b2c2d3e3f2 알파벳은 총 26 글자 // 풀이 1. 모든 알파벳에 대해서 Count() // 힌트: 소문자 알파벳 'a'~'z'는 int로는 97~122에 대응 // 단점: 없는 알파벳도 세야 한다. // 표를 사용할 수도 있고 사용하지 않을 수도 있음 int table[26] = { 0 }; // 모든 값을 0으로 초기화 for (int i = 0; i < 26; i++) { // 힌트: char(i + 97) // 표를 만들고 나중에 몰아서 출력하는 방법 // table[i] = ... table[i] = Count(arr, n, i + 97); // 표를 만들지 않고 직접 출력하는 방법 // ... int co..
2023.10.31 -
// 배열 arr에 x가 몇 번 나오는지 반환 int Count(const int* const arr, const int n, const int x) { // TODO: int count = 0; for (int i = 0; i < n; i++) { if (arr[i] == x) { count++; } } return count; } // 배열 arr에 x가 있으면 index 반환, 없으면 -1 반환 int SequentialSearch(int* arr, int n, int x) { // TODO: for (int i = 0; i < n; i++) { if (arr[i] == x) { return i; } } return -1; } int SortedCountHelper(int* arr, int n, i..
순차 탐색 (Sequential Search)// 배열 arr에 x가 몇 번 나오는지 반환 int Count(const int* const arr, const int n, const int x) { // TODO: int count = 0; for (int i = 0; i < n; i++) { if (arr[i] == x) { count++; } } return count; } // 배열 arr에 x가 있으면 index 반환, 없으면 -1 반환 int SequentialSearch(int* arr, int n, int x) { // TODO: for (int i = 0; i < n; i++) { if (arr[i] == x) { return i; } } return -1; } int SortedCountHelper(int* arr, int n, i..
2023.10.31 -
인덱스를 순회하면서 한 값을 골라서 그 값을 적절한 위치에 삽입하는 정렬 알고리즘 기존에 이미 정렬된 값의 덩어리들을 흐트러뜨리지 않고 유지할 수 있다는 장점이 있다. 그러나 삽입을 하면서 값을 밀어낼때 값들을 하나씩 옆으로 복사해서 옮겨야 한다는 점이 단점이다. https://www.geeksforgeeks.org/insertion-sort/ Insertion Sort - Data Structure and Algorithm Tutorials - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming arti..
삽입 정렬 (Insertion Sort)인덱스를 순회하면서 한 값을 골라서 그 값을 적절한 위치에 삽입하는 정렬 알고리즘 기존에 이미 정렬된 값의 덩어리들을 흐트러뜨리지 않고 유지할 수 있다는 장점이 있다. 그러나 삽입을 하면서 값을 밀어낼때 값들을 하나씩 옆으로 복사해서 옮겨야 한다는 점이 단점이다. https://www.geeksforgeeks.org/insertion-sort/ Insertion Sort - Data Structure and Algorithm Tutorials - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming arti..
2023.10.30 -
https://www.geeksforgeeks.org/stable-and-unstable-sorting-algorithms/ Stable and Unstable Sorting Algorithms - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions. www.geeksforgeeks.org 정렬을 했을때 값이 같은 값은 어떻게 될까? 보통의 경우는 어차피 값이..
정렬 알고리즘의 안정성 (Stability)https://www.geeksforgeeks.org/stable-and-unstable-sorting-algorithms/ Stable and Unstable Sorting Algorithms - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions. www.geeksforgeeks.org 정렬을 했을때 값이 같은 값은 어떻게 될까? 보통의 경우는 어차피 값이..
2023.10.30