본문 바로가기 메뉴 바로가기

Jun's TID

프로필사진

Jun's TID

Jun's TID
검색하기 폼 Mountain View
  • 분류 전체보기 (509)
    • 정보관리기술사 (0)
      • Network (0)
    • Mobile (158)
      • Android (71)
      • Dart (5)
      • Flutter (9)
      • ios (38)
      • react-native (35)
    • WEB (110)
      • DynamicWeb (33)
      • 자바스크립트 (22)
      • CSS (4)
      • jQuery (21)
      • ajax (4)
      • JPA (2)
      • React (21)
      • Node (3)
    • Database (25)
    • [Python] (35)
      • 문자열 조작 (4)
      • 선형 자료구조 (7)
      • Machine learning (17)
    • [JAVA] (111)
      • Spring-Boot (12)
      • Spring (47)
      • JExcel (3)
      • BeakJoon (4)
      • Programmers (23)
      • JAVA (8)
      • Algorithms (8)
      • Mybatis (6)
    • Network (12)
    • Projects (9)
    • Support (10)
    • 프로젝트 분석 (4)
    • English (8)
    • Life (2)
      • 운동냥이 (0)
      • 맛집냥이 (1)
      • 커피냥이 (0)
    • 정보보안기사 (2)
    • C++ (15)
      • 참고 (11)
      • 연습 문제 (4)
    • 누리 임보 일기 (7)
  • GUESTBOOK
  • TAG
  • RSS

C++
[C++] Binary Search Tree

Binary Search Tree(이진 검색 트리)는 널리 사용되는 형태의 이진 트리이다. 부모 노드와 자식 노드 간의 관계는 아래와 같다. 왼쪽 노드 left) current = current->left; /* 가장 작은 노드 반환 */ return current; } private: /* 원소 검색/삽입은 재귀적으로 동작하기 때문에 실제 구현을 impl에서 하고, private으로 지정하여 외부에서 직접 호출을 막는다. */ node* find_impl(node* current, int value) { if(!current) { cout data == value) { cout right) current->right = new node{value, NULL, NULL}; else insert_impl(..

C++/연습 문제 2024. 1. 6. 10:56
[C++] Binary Tree: 순회

이진 트리는 각 노드가 최대 두 개의 자식 노드(왼쪽과 오른쪽)를 가질 수 있는 계층적 자료 구조이다. 이 구조에서 모든 노드는 데이터를 저장하며, 주로 탐색, 정렬 작업에 효율적이다. 이진 트리는 다양한 형태(예: 이진 탐색 트리, AVL 트리)로 존재한다. 우선 가장 기본적인 형태의 이진 트리로 아래와 같은 조직도를 구현하려고 한다. 코드와 함께 살펴보자. #include #include #include using namespace std; struct node { string position; // 각 노드는 'position'이라는 문자열을 가지며, 직책을 나타낸다. node* first; // 'first' 포인터는 첫 번째 자식 노드를 가리킨다. node* second; // 'second' ..

C++/연습 문제 2024. 1. 5. 08:10
[C++] std::deque & std:stack

deque deque (double-ended queue)는 양쪽 끝에서 요소를 추가하거나 제거할 수 있는 유연한 컨테이너이다. 이 컨테이너는 다양한 작업을 지원하며, 각각의 작업은 특정한 시간 복잡도를 가진다. push_front: deque의 시작 부분에 요소를 추가한다. 시간 복잡도는 일반적으로 상수 시간(O(1))이다. push_back: deque의 끝 부분에 요소를 추가한다. 이 작업 역시 상수 시간(O(1))이 소요된다. pop_back: deque의 끝 부분에서 요소를 제거한다. 상수 시간(O(1))이 걸린다. pop_front: deque의 시작 부분에서 요소를 제거한다. 이 작업도 상수 시간(O(1))이 소요된다. erase: deque 내의 특정 위치에 있는 요소를 제거한다. 시간 복..

C++/참고 2024. 1. 4. 08:18
[C++] std::forward_list

std::forward_list는 C++ 표준 라이브러리의 일부로, 단방향 연결 리스트를 구현하고 있다. 각 원소는 다음 원소를 가리키는 포인터를 포함하며, 이 구조는 원소의 삽입과 삭제를 유연하게 만든다. 초기화 및 원소 셋팅 #include #include int main() { std::forward_list flist; // 빈 forward_list 생성 // 원소 삽입 flist.push_front(1); flist.push_front(2); flist.push_front(3); // 출력 for (int n : flist) { std::cout

C++/참고 2023. 12. 18. 23:43
[C++] std::vector

std::array 자주 사용되는 자료 구조이지만, 주요 단점이 몇 가지 존재한다. 배열의 크기는 컴파일 시간에 결정되는 상수이다. 즉, 프로그램 실행 중에 변경할 수 없다. 크기가 고정되어 있어서 원소를 추가하거나 삭제할 수 없다. std::array의 메모리 할당 방법을 변경할 수 없다. 항상 스택 메모리를 사용한다. std::vector - 가변 크기 배열 vector는 C 스타일 배열 또는 std::array가 가지고 있는 가장 두드러지는 문제 중 하나인 '고정 크기' 문제를 해결한다. std::vector는 초기화 과정에 데이터의 크기를 제공하지 않아도 된다. 다음은 벡터를 초기화하는 몇 가지 방법이다. // 크기가 0인 벡터 선언 std::vector vec; // 지정한 초깃값으로 이뤄진 크..

C++/참고 2023. 12. 18. 09:22
[C++] 문법: 후행타입반환

후행 반환 타입(trailing return type)은 C++11에서 도입된 기능으로, 함수의 반환 타입을 함수 매개변수 목록 뒤에 명시하는 방법이다. 이는 함수 선언 시 반환 타입을 더 명확하게 표현하거나, 특히 템플릿 함수에서 반환 타입을 표현하기 어려운 경우에 유용하다. 구문 후행 반환 타입은 auto 키워드와 화살표 (->)를 사용하여 정의된다. 기본 형식은 다음과 같다: auto functionName(parameters) -> returnType; 여기서 functionName은 함수의 이름, parameters는 매개변수 목록, returnType은 반환 타입이다. 사용 예 후행 반환 타입은 특히 반환 타입이 매개변수에 의존하는 경우 유용하다. 예를 들어, 두 매개변수의 타입이 다를 때 그..

C++/참고 2023. 12. 17. 09:37
[C++] 연습 문제 2. 빠르고 범용적인 데이터 저장 컨테이너 구현

이번에 연습할 문제는 다양한 타입의 데이터 여러 개를 인자로 받아 공통 타입으로 변환하는 함수를 만들어 보는 예제이다. 이 함수가 반환하는 컨테이너는 모든 인자를 공통 타입으로 변환하여 저장하며, 전체 원소를 빠르게 순회할 수 있어야 한다. #include #include #include using namespace std; template auto build_array(Args&&... args) -> array { using commonType = typename common_type::type; return {forward((Args&&)args)...}; }; int main() { auto data = build_array(1, 0u, 'a', 3.2f, false); for(auto i : d..

C++/연습 문제 2023. 12. 17. 09:35
[C++] 문법: 범위 지정 연산자와 점 연산자 차이

:: (범위 지정 연산자) - 기능: `::` 연산자는 클래스, 네임스페이스, 열거형 등의 특정 범위 내에서 멤버에 접근하는 데 사용되는 연산자이다. 이는 클래스의 정적 멤버, 네임스페이스의 멤버, 열거형의 멤버 등에 접근할 때 필요하다. - 사용 예시: `MyClass::myStaticMethod`라는 표현은 `MyClass`라는 클래스 내에 정의된 정적 메서드 `myStaticMethod`에 접근하는 것이다. 이와 유사하게, `::` 연산자는 전역 네임스페이스에 있는 함수나 변수에 접근할 때도 사용된다. 예를 들어, 전역 변수 `globalVar`에 접근하기 위해서는 `::globalVar`로 표현할 수 있다. - 특징: 이 연산자는 객체의 인스턴스가 아닌, 클래스 자체나 네임스페이스 같은 더 큰 범..

C++/참고 2023. 12. 17. 09:26
[C++] 문법: 범용 참조 (Args&&... args)

범용 참조는 주로 템플릿 함수에서 lvalue와 rvalue 참조를 모두 처리할 수 있는 유연성을 제공하기 위해 사용된다. 여기서 `Args&&`는 다음과 같은 특징을 가진다: 1. 타입 추론: `Args&&`는 컴파일러가 인자의 타입을 추론하도록 한다. 인자가 lvalue인지 rvalue인지에 따라 `Args`의 타입이 결정된다. 2. lvalue와 rvalue 처리: `Args&&`는 lvalue 참조와 rvalue 참조 모두를 처리할 수 있다. 이는 함수가 lvalue 참조 (예: 변수) 및 rvalue 참조 (예: 임시 객체)를 모두 효율적으로 처리할 수 있도록 해준다. 3. 완벽한 전달 (Perfect Forwarding): `Args&&`와 함께 `std::forward`를 사용하면 함수에 전..

C++/참고 2023. 12. 17. 09:24
[C++] 문법: 가변 템플릿 인자 (...args)

가변 템플릿 인자는 템플릿 함수나 클래스가 임의의 수와 타입의 인자를 받을 수 있도록 한다. 여기서 `Args`는 가변 인자의 타입들을 나타내는 플레이스홀더 이름이며, 다른 이름으로 대체될 수 있다. 가변 템플릿 인자를 사용하는 방법은 다음과 같다: template void myFunction(Args ... args) { // args를 사용하는 코드 } 이 함수는 어떤 수와 타입의 인자든 받을 수 있다. 예를 들어, `myFunction(1, 2.5, "Hello")`와 같이 호출할 수 있다. template class MyClass { public: MyClass(Args ... args) { // args를 사용하는 생성자의 로직 } }; 이 클래스도 여러 타입과 수의 인자를 받을 수 있는 생성자..

C++/참고 2023. 12. 17. 09:22
이전 1 2 다음
이전 다음
최근에 올라온 글
최근에 달린 댓글
TAG
  • Promise
  • 인천 구월동 맛집
  • redux-thunk
  • 파니노구스토
  • 정보보안기사 #실기 #정리
  • Async
  • await
  • react-native
  • AsyncStorage
  • javascript
  • react
  • 이탈리안 레스토랑
  • redux
  • 맛집
  • 인천 구월동 이탈리안 맛집
more
Total
Today
Yesterday

Powered by Tistory / Designed by INJE

티스토리툴바