본문 바로가기

c++7

[C/C++] 포인터와 참조 / 구조체와 클래스 https://docs.popekim.com/ko/coding-standards/cpp C++ 코딩 표준 | 포프의 문서창고TOP 개발자에게 배우는 컴공수업 | 수업료는 최저시급, 난 최고연봉 | 프로그래밍 공부순서 야근 없이 오직 실력으로 대우받는 프로그래머가 되고 싶다고요? POCU 아카데미에서 시작하세요!docs.popekim.compointer vs reference어셈블리어는 포인터, 참조 모두 같다.1. 메모리 접근:포인터: 특정 메모리 주소를 가리킬 수 있어 유연하지만, 잘못된 포인터 설정은 의도치 않은 메모리를 건드려 프로그램에 치명적인 오류를 일으킬 수도 있다.참조: 특정 변수에 고정되며 다른 주소로 변경할 수 없기 때문에 포인터보다 안전하게 사용할 수 있다.2. 참조를 사용하는 이유복사.. 2024. 11. 4.
std::deque, std::stack, std::queue, std::priority_queue std::deque덱(deque)는 배열과 리스트 기반 컨테이너의 장점이 섞여 있는 형태이다.push_front(), pop_front(), push_back(), pop_back() 동작이 O(1) 시간 복잡도로 동작모든 원소에 대해 임의 접근 동작이 O(1) 시간 복잡도로 동작덱 중간에서 원소 삽입 또는 삭제는 O(n) 시간 복잡도로 동일, 최대 n/2 단계 (n은 deque의 크기)Deque의 사용 사례양방향 탐색이 필요한 경우: 덱을 활용한 너비 우선 탐색(BFS) 또는 양방향 BFS에서는 탐색의 방향을 유연하게 조절해야 할 때 덱을 활용하여 구현할 수 있습니다.슬라이딩 윈도우 문제: 주어진 배열에서 고정된 크기의 윈도우를 이동시키며 최댓값이나 최솟값을 찾는 문제에서 덱을 사용하면 각 윈도우에서 .. 2024. 10. 27.
std:forward_list, std:list 배열 벡터 등 연속된 자료구조는 데이터 중간에 자료를 추가하거나 삭제하는 작업이 매우 비효율적이다.탭을 지원하는 브라우저에서 새로운 탭을 임의의 위치에 옮기는 경우음악 플레이어와 같이 재생목록 중간에 새로운 노래를 추가할 수 있는 프로그램의 경우연결 리스트 구현 개념1. 값+포인터2. new/delete를 활용한 메모리 할당 및 해제std:forward_list- 단방향 연결리스트- 메모리를 적게쓰고 빠른 성능을 유지하기 위해 사용- 리스트 끝에 원소 추가, 역방향 이동, 리스트 크기 반환 기능 Xstruct linked_list_node{ int data; doubly_linked_list_node* next;};std:forward_list에서 원소 삽입 삭제- forward_list는 마.. 2024. 10. 26.
std::array, std::vector 기본 build & run 명령어g++ -o ex ex.cpp && ./exstd::array- std::array는 메모리를 자동으로 할당하고 해제한다.- C 스타일 배열과 같이 [ ] 연산자를 제공- at() : [ ] 연산자보다 느리지만 예외처리용으로 쓸 수 있다.#include #include using namespace std;std::array arr3 ={1, 2, 3, 4};int main(){ try{ cout 함수 인자 전달- 함수에 array 객체가 전달되면 새로운 배열에 모든 원소가 복사된다. (const를 사용하면 메모리와 시간이 절약)#include #include using namespace std;template void print(array arr){ for.. 2024. 10. 26.
연속된 자료구조 vs 연결된 자료구조 연속된 자료구조- 모든 원소를 단일 메모리 청크(chunck)에 저장- 큰 사각형이 단일 메모리 청크를 나타내고, 안쪽 작은 사각형은 원소가 저장된 메모리 공간을 의미- 각각의 원소는 같은 타입(type)이고, 데이터 접근 시 주소를 이용해서 접근하고 O(1)이 걸린다.- ex) 배열정적 배열 vs 동적 배열정적 배열은 스택(stack) 영역에 할당되어 함수가 종료되면 자동으로 해제된다.동적 배열은 힙(heap) 영역에 할당되어 사용자가 직접 해제하기 전까지 유지된다.int arr[size];int* arr = (int*)malloc(size*sizeof(int));int* arr = new int[size];* 배열과 같은 연속된 자료 구조는 원소끼리 인접되어 있어 접근 시 원소 몇 개도 같이 캐시(c.. 2024. 10. 26.
[C++] STL container C++의 STL(Standard Template Library)에서 제공하는 컨테이너들은 데이터를 효율적으로 저장하고 관리할 수 있도록 도와줍니다. vector, list, deque는 모두 시퀀스 컨테이너로, 저장된 데이터의 순서를 유지하며 각기 다른 상황에서 효율성을 제공합니다.  1. vector (동적 배열)특징: 크기를 자동으로 조절하는 동적 배열입니다. 요소를 뒤에서 삽입하거나 삭제하는 작업은 빠르지만, 중간에 삽입하거나 삭제하는 작업은 느림사용 예: 배열처럼 사용하되 크기가 변경될 수 있는 경우에 적합  #include #include int main() { std::vector v = {1, 2, 3}; // 초기화 v.push_back(4); // 끝에 4 추가 v.pus.. 2024. 10. 19.