개인공부/Rookiss C++ 프로그래밍 입문12 Chapter 12 - Modern C++ algorithm 자료구조 : 데이터를 저장하는 구조 알고리즘 : 데이터를 어떻게 사용할 것인가? #include #include #include using namespace std; int main() { srand(static_cast(time(nullptr))); vector v; for (int i = 0; i < 100; i++) { int num = rand() % 100; v.push_back(num); } // find() { int number = 50; vector::iterator itFind = find(v.begin(), v.end(), number); if (itFind == v.end()) cout 2023. 3. 29. Chapter 11 - STL vector #1 STL(Standard Template Library) : 프로그래밍할 때 필요한 자료구조/알고리즘들을 템플릿으로 제공하는 라이브러리 컨테이너(Container) : 데이터를 저장하는 객체 (자료구조, Data Structure) 벡터(vector)는 컨테이너의 하위 개념 #include using namespace std; vector v; v.push_back(1); v.push_back(2); v.push_back(3); v.push_back(4); v.push_back(5); const int size = v.size(); for (int i = 0; i < size; i++) { cout 2023. 3. 29. Chapter 10 - 콜백 함수 함수 포인터 #1 int* pointer = &a int : 데이터 타입 pointer : 변수 이름 int Add(int a, int b) { return a + b; } int main() { typedef int(FUNC_TYPE)(int a, int b); using FUNC_TYPE = int(int a, int b); // modern C++ FUNC_TYPE* fn = ADD; int result = fn(1, 2); int result2 = (*fn)(1, 2); } FUNC_TYPE* fn = ADD() FUNC_TYPE : 데이터 타입 fn : 변수 이름 Add : 주소를 저장할 대상 함수 함수의 이름은 함수의 시작 주소를 가짐(배열과 유사) 함수 포인터에는 접근 연산자 *를 붙여도 함.. 2023. 3. 29. Chapter 9 - 디버깅 디버깅 F5 : 다음 중단점 혹은 프로그램 끝까지 실행 F10 : 단순히 다음 라인으로 진행 F11 : 호출된 함수 내부로 진입 중단점 항목에서 중단점들을 간편하게 관리 가능 중첩된 함수 호출시 호출 스택 정보가 유용하게 사용됨 중단점에 조건식을 걸어줄 수도 있음 중단점에서 로그 메세지를 출력하도록 할 경우 중단하는 대신 메시지를 디버그 콘솔에 표시함 코드를 읽는 것보다 디버깅을 하는 것이 훨씬 효율적임 디버깅 문제 풀이 #1 / #2 / #3 Q1 : 인수가 설정된 생성자에서 변수를 초기화하지 않음 Q2 : 배열의 인덱스 범위를 벗어남 Q3 : hp가 음수가 되는 경우를 상정하지 않음 Q4 : 오버플로우가 발생하는 경우를 상정하지 않음 Q5 : 0으로 나눠지는 경우를 상정하지 않음 Q6 : 무한한 재귀.. 2023. 3. 29. 이전 1 2 3 다음