SW/C,C++13 [자료구조] 연결리스트 - List 선수지식 (자료구조 overview)https://microelectronics.tistory.com/85 [자료구조] 선형 자료구조와 비선형 자료구조작성중 ..선형 vs 비선형선형구조 : 자료를 순차적으로 나열한 형태 (스택, 큐, 배열, 연결리스트)비선형 구조 : 하나의 자료 뒤에 다수의 자료가 올 수 있는 형태 (트리, 그래프)배열 vs 동적배열 vsmicroelectronics.tistory.com 예제 코드#include #include using namespace std;int main(){ list li; list::iterator eraseIt; for (int i = 0; i ::iterator it = li.begin(); it != li.end(); it++) { cout 결과01.. 2024. 9. 24. [자료구조] 선형 자료구조와 비선형 자료구조 작성중 ..선형 vs 비선형선형구조 : 자료를 순차적으로 나열한 형태 (스택, 큐, 배열, 연결리스트)비선형 구조 : 하나의 자료 뒤에 다수의 자료가 올 수 있는 형태 (트리, 그래프)배열 vs 동적배열 vs 연결리스트 (호텔에 비유)배열사용할 방 개수를 고정해서 계약 (절대 변경 불가)연속된 방을 배정받아 사용장점 : 연속된 방단점 : 방 추가/축소 불가동적배열 (C++ 에서의 vector)사용할 방 개수를 유동적으로 계약연속된 방으로 배정받아 사용방 할당 정책 : 실제로 사용할 방 보다 많이, 여유분을 두고(대략 1.5배에서 2배) 예약 후 이사. -> 이사 횟수 최소화를 위함.장점 : 유동적인 계약 (이사 횟수 최소화)단점 : 중간 삽입/삭제 (배열도 마찬가지임)연결리스트연속되지 않은 방을 사용장점.. 2024. 9. 22. [자료구조] 트리 - 이진트리, 순회 정의트리 중에서 가장 많이 쓰이는 트리로, 모든 노드가 2개의 서브 트리를 가진다.서브트리는 공집합 일 수 있다. (공집합 또한 이진트리이다.)이진트리의 노드에는 최대 2개까지의 자식노드가 존재할 수 있고, 모든 노드의 차수가 2 이하이다. 이진트리에는 서브트리간의 순서가 존재한다. (즉 왼쪽과, 오른쪽이 구별된다) 1. 공집합이거나2. 루트와 왼쪽 서브트리, 오른쪽 서브 트리로 구성된 노드들의 유한 집합. 성질n개의 노드를 가진 이진트리는 정확히 n-1 개의 간선(edge) 를 가진다. 왜냐하면 이진트리에서 노드는 루트를 제외하면 정확히 하나의 부모노드를 가지기 때문이다. (부모와 자식간에는 1개의 edge 만이 존재한다) 높이가 h 인 이진트리의 경우, 최소 h 개의 노드를 가지며 최대 2^h -1 .. 2024. 6. 7. [C/C++] 함수인자로써 이중포인터와 가변길이배열 지난 게시글 : https://microelectronics.tistory.com/50 [C/C++] 동적 2차원 배열과 가변길이배열(VLA)C언어의 표준에서는 고정된 크기의 배열을 선언할 때 배열의 크기를 컴파일 시간에 알 수 있어야 했다. 그렇기 때문에 C99 표준 이전에는 배열의 크기로 변수를 사용하는 것이 허용되지 않았다.microelectronics.tistory.com 이중포인터와 가변길이 2차원배열2중포인터로 동적 2차원 배열을 만들었다고 하더라도, 여전히 변수의 타입은 이중포인터다.하지만 배열과 동작원리(주소가 가리키는 메커니즘)는 같으므로, 배열을 조종하듯 값을 넣고 뺄 수 있다. (물론 2중 포인터로 동적할당 시 각 행의 첫번째 요소들이 연속된 값을 가지도록 해야 한다. 아래 코드 참고.. 2024. 5. 13. [C++] 배열 index 관련 예외처리 [C++] 배열 index 관련 예외처리함수호출index 를 매개변수로 가지는 함수를 호출하고, 그 함수는 전달받은 index 로 배열 혹은 벡터에 접근한다고 가정해보자.만약 index 가 범위를 초과한다면 segmentation fault 에러가 발생할 것이다. 해결아래와 같이 try, catch 를 활용하여 함수에서 throw 하는 예외를 처리할 수 있다. 2024. 5. 3. [C++] std::cin 타입 불일치 [C++] std::cin 사용 시 주의점cin 변수의 타입불일치코드를 짜다가 정수 값을 입력받을 일이 있었는데, 예상치 못한 에러가 나와서 당황했다. 아래와 같은 코드가 있다고 해보자.#include int main(){ int index; std::cout > index; std::cout > num; std::cout 올바른 정수값을 넣어 줄 경우 출력은 생각하는 대로다.만약 문자를 입력한다면 어떻게 될까두번째 입력을 받기도 전에 채워지고 이상한 값이 num 에 할당된다. 문제의 원인타입 불일치: int 변수에 문자를 입력하면, 입력 스트림은 실패 상태로 설정된다. 이 때문에 변수 index는 초기화되지 않거나 기본값인 0으로 설정된다.스트림의 실패 상태: 입력이 실패하면 스트.. 2024. 5. 2. [C/C++] 커널 드라이버에서의 함수포인터 커널 드라이버에서의 함수포인터 구조체에 함수 포인터를 사용하는 방법은 커널 드라이버나 다른 시스템 수준의 프로그래밍에서 매우 유용하게 사용된다. 이러한 방식은 다양한 기능을 동적으로 처리할 수 있게 해주며, 특히 장치 드라이버의 인터페이스를 관리할 때 흔히 볼 수 있다. 커널 드라이버에서의 사용 커널 드라이버에서는 구조체와 함수포인터를 사용하여 다양한 하드웨어 또는 가상 장치의 동작을 추상화한다. 예를 들어, Linux의 파일 시스템 또는 네트워크 장치 드라이버에서는 각각의 장치 특성에 맞게 동작을 정의할 수 있는 함수 포인터를 포함하는 구조체를 사용한다. 이러한 방식은 각 장치 또는 드라이버가 동일한 인터페이스를 공유하면서도, 내부적으로 다른 구현을 가질 수 있게 해주어 코드의 재사용성과 모듈성을 높인.. 2024. 4. 22. [C/C++] 콜백함수의 인자로써 void 포인터 콜백함수의 인자로써 void 포인터 Intro 지난 게시글에서, 이중포인터와 void 포인터에 대해 간략하게 다뤘다. https://microelectronics.tistory.com/54 [C/C++] 이중포인터와 void 포인터 이중포인터와 void 포인터 문자열배열은 이중포인터이다 아래와 같이 문자열 배열이 있고, 해당 문자열배열의 주소를 void 포인터에 초기화시켰다고 가정해보자. char* arr[] = {"banana", "apple"}; void* vr microelectronics.tistory.com 또한 콜백함수에 대해 왜/언제 쓰는지를 알아보았다. https://microelectronics.tistory.com/46 [C/C++] 콜백함수 (Callback Function) 콜백 함.. 2024. 4. 21. [C/C++] 이중포인터와 void 포인터 이중포인터와 void 포인터 문자열배열은 이중포인터이다 아래와 같이 문자열 배열이 있고, 해당 문자열배열의 주소를 void 포인터에 초기화시켰다고 가정해보자. char* arr[] = {"banana", "apple"}; void* vrr = arr; 여기서 다들 아는 내용을 정리해보자. 배열의 이름은 해당 배열의 첫 번째 요소의 주소를 나타내므로, arr는 &(arr[0])와 동일하다. arr는 char* 타입의 요소를 저장하는 배열이기 때문에, 이를 char** 타입으로 볼 수 있다. 즉, arr는 char* 타입의 배열의 첫 번째 요소의 주소를 가리키는 포인터이다. 포인터 변수의 크기는 64비트 시스템 기준 8바이트이다. 메모리 주소를 모두 표현해야 하기 때문이다. arr 는 문자열포인터의 배열로,.. 2024. 4. 20. 이전 1 2 다음