Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++

  1. C++ STL unordered_multimap swap() 함수 사용법과 예제 총정리

    C++ STL의 unordered_multimap swap() 함수는 크기와 타입이 같은 두 컨테이너 사이에서 요소들을 서로 맞바꾸는 데 사용됩니다. 이 함수를 호출하면 한 컨테이너의 모든 요소가 다른 컨테이너로 이동하고, 그 반대 역시 동시에 이루어집니다. unordered_map과 unordered_multimap 모두 동일한 방식으로 swap()을 지원합니다.swap() 함수의 주요 특징두 컨테이너의 내용 전체를 한 번에 교환합니다.내부적으로 해시 테이블 구조 자체를 맞바꾸므로 시간 복잡도는 상수 시간 O(1)로 매우 효율적입

  2. C++ STL vector insert() 함수 완벽 정리 – 사용법과 예제

    C++ STL의 vector insert() 함수는 지정한 위치 앞에 새로운 요소를 삽입하여 컨테이너의 크기를 늘리는 데 사용됩니다. 이 함수는 C++ 표준 라이브러리(STL)에 미리 정의되어 있어, 별도의 구현 없이 바로 호출할 수 있습니다.insert() 함수는 용도에 따라 세 가지 형태의 문법으로 사용할 수 있습니다.insert() 함수의 세 가지 문법1. 위치와 값만 지정하는 방법특정 위치(pos) 앞에 하나의 값(value)을 삽입합니다.vector_name.insert(pos, value);2. 위치, 개수(size),

  3. C++ STL vector::begin()과 vector::end() 함수 완벽 정리

    C++ STL에서 vector::begin() 함수는 컨테이너의 첫 번째 요소를 가리키는 반복자(iterator)를 반환하는 양방향 반복자(bidirectional iterator)입니다. vector::end() 함수 역시 양방향 반복자로, 마지막 요소의 다음 위치(past-the-end)를 가리키는 반복자를 반환합니다. 즉, end()가 반환하는 반복자는 실제 유효한 요소를 가리키지 않으며, 벡터의 끝을 판단하는 기준점으로 사용됩니다. 이 두 함수는 주로 반복문에서 벡터의 모든 요소를 순회하거나, insert() 같은 멤버 함

  4. C++ STL array 컨테이너로 배열 구현하기: 의사코드와 완전한 예제

    C++의 STL(표준 템플릿 라이브러리)에는 고정 크기 배열을 다룰 수 있는 array 컨테이너가 포함되어 있습니다. 이 컨테이너는 일반 배열보다 안전하고 편리하며, 크기 확인, 요소 접근, 반복자 순회 등 다양한 멤버 함수를 제공합니다.이 글에서는 STL의 array를 활용해 배열에 대한 여러 연산을 메뉴 형태로 수행하는 C++ 프로그램을 소개합니다.배열 연산 개요 및 의사코드프로그램은 사용자에게 메뉴를 보여주고, 선택한 번호에 따라 아래와 같은 연산을 수행합니다.배열의 크기 출력배열에 값 삽입배열의 첫 번째(front) 요소 출

  5. 재귀 호출 없이 이진 트리를 중위 순회하는 C++ 프로그램

    이진 트리를 중위 순회(Inorder Traversal)하면 먼저 왼쪽 서브트리를 방문하고, 그다음 루트 노드를 거쳐 마지막에 오른쪽 서브트리를 방문합니다. 특히 이진 탐색 트리(BST)에서는 중위 순회 시 키 값이 항상 오름차순으로 출력된다는 특징이 있습니다.일반적으로 중위 순회는 재귀 함수로 간단하게 구현할 수 있지만, 이번 글에서는 재귀 호출 없이 스택(Stack) 자료구조만 사용하여 중위 순회를 수행하는 C++ 프로그램을 다룹니다. 재귀 대신 명시적인 스택을 사용하면 깊이가 매우 큰 트리에서도 스택 오버플로우 걱정 없이 안전

  6. C++에서 .so 파일의 모든 심볼을 확인하는 방법: readelf와 nm 활용법

    리눅스 환경에서 공유 라이브러리(.so) 파일에 어떤 심볼(symbol)이 포함되어 있는지 확인해야 할 때가 있습니다. 이럴 때 활용할 수 있는 대표적인 명령줄 도구로 readelf와 nm이 있습니다.1. readelf로 ELF 형식의 .so 파일 읽기.so 파일은 ELF(Executable and Linkable Format) 형식으로 작성된 바이너리입니다. 이 파일의 내부 구조를 읽고 분석하려면 readelf 명령어를 사용하면 됩니다.readelf -Ws libName.so-W 옵션은 출력 결과를 줄바꿈 없이 전체 폭으로 표시하

  7. C++에서 전체 파일을 std::string으로 읽는 가장 좋은 방법

    C++에서 파일 전체 내용을 std::string으로 한 번에 읽어 들이는 것은 텍스트 처리 작업에서 자주 사용되는 기법입니다. 이 글에서는 가장 간단하고 널리 쓰이는 방법인 rdbuf()와 문자열 스트림을 활용한 방법을 소개합니다.알고리즘시작 파일 이름을 입력 스트림으로 받습니다. string 변수 str을 선언합니다. rdbuf()를 사용하여 파일 끝까지 데이터를 읽습니다. 읽은 데이터를 str에 저장합니다. 데이터를 출력합니다. 끝.예제 코드#include<iostream> #in

  8. C++로 바이너리 파일 작성하기: write() 메서드 활용법

    C++에서 바이너리 파일을 작성하려면 write() 메서드를 사용합니다. 이 메서드는 put 포인터가 가리키는 위치부터 시작하여 지정된 스트림에 주어진 바이트 수만큼 데이터를 기록하는 역할을 합니다.put 포인터가 파일의 끝에 위치해 있다면 파일이 자동으로 확장되어 새 데이터가 추가됩니다. 반면 포인터가 파일 중간을 가리키고 있다면 해당 위치의 기존 데이터가 새 데이터로 덮어써집니다. 또한 파일 쓰기 도중 오류가 발생하면 스트림은 에러 상태로 전환됩니다.write() 메서드 문법ostream& write(const char*

  9. C++로 해시 테이블(Hash Table) 직접 구현하기 – 알고리즘과 전체 코드 예제

    해시 테이블(Hash Table)은 키(Key)-값(Value) 쌍을 저장하는 대표적인 자료구조입니다. 해시 테이블은 해시 함수(Hash Function)를 사용하여 요소를 삽입하거나 검색할 배열의 인덱스를 계산하며, 이를 통해 평균적으로 O(1)의 매우 빠른 속도로 데이터에 접근할 수 있습니다.이 글에서는 C++를 이용해 해시 테이블을 직접 구현하는 방법을 단계별로 살펴보겠습니다.구현 알고리즘시작 테이블 크기 T_S를 임의의 정수 값으로 초기화한다. 키 k와 값 v를 선언하는 구조체 hashTableEntry를 생성

  10. 이중 연결 리스트를 활용한 해시 테이블 체이닝 구현 (C++)

    해시 테이블(Hash Table)은 키-값 쌍(Key-Value Pair)을 저장하는 자료구조입니다. 해시 함수(Hash Function)를 사용해 키를 배열의 인덱스로 변환하고, 해당 위치에 데이터를 저장하거나 검색합니다. 이 문서에서는 이중 연결 리스트(Doubly Linked List)를 이용해 충돌(Collision)을 해결하는 체이닝(Chaining) 방식의 해시 테이블을 C++로 구현하는 방법을 설명합니다. 핵심 알고리즘 1. 삽입 (Insert) 해시 값을 계산해 버킷(Bucket) 위치를 찾습니다. 해당 버킷이 비

  11. C++ 변수 범위(Scope) 총정리: 지역 변수와 전역 변수의 차이

    변수 범위(scope)란 프로그램 내에서 변수가 유효하게 사용될 수 있는 영역을 의미합니다. C++에서는 크게 세 가지 위치에 변수를 선언할 수 있습니다.함수 또는 블록 내부 — 지역 변수(local variable)함수 매개변수 정의 부분 — 형식 매개변수(formal parameter)모든 함수 외부 — 전역 변수(global variable)함수와 매개변수에 대한 자세한 내용은 이후 장에서 다룰 예정이며, 여기서는 지역 변수와 전역 변수의 개념과 차이점을 중점적으로 설명하겠습니다.지역 변수(Local Variables)함수나

  12. C++ 변환 생성자(Conversion Constructor)란? 개념부터 예제까지 완벽 정리

    이 글에서는 C++ 클래스의 변환 생성자(Conversion Constructor)가 무엇인지 살펴보겠습니다. 먼저 생성자에 대한 기본 개념부터 짚고 넘어가겠습니다.생성자(Constructor)란?생성자는 클래스의 객체가 생성될 때 자동으로 호출되는 특수한 멤버 함수입니다. 생성자에는 다음과 같은 고유한 특징이 있습니다.함수 이름이 클래스 이름과 반드시 동일해야 합니다.반환값(return type)을 가지지 않습니다.객체가 선언되는 시점에 자동으로 호출됩니다.생성자는 매개변수를 받을 수도 있고, 받지 않을 수도 있습니다. 매개변수를

  13. C++ 와이드 문자(wchar_t)의 이해와 필수 라이브러리 함수 정리

    이 글에서는 C++의 와이드 문자(wide character)가 무엇인지 살펴보고, 와이드 문자를 다룰 때 유용하게 사용되는 대표적인 라이브러리 함수들을 함께 알아보겠습니다.와이드 문자란 무엇인가?와이드 문자는 일반적인 char 자료형과 매우 유사하지만, 결정적인 차이점이 있습니다. 일반 char는 메모리에서 1바이트를 차지하는 반면, 와이드 문자(wchar_t)는 2바이트(컴파일러에 따라 4바이트)의 공간을 사용합니다.2바이트 공간을 활용하면 최대 64K(65,536)개의 서로 다른 문자를 표현할 수 있으며, 이를 통해 유니코드(

  14. C++ GCC 컴파일러의 내장 함수(Built-in Functions) 총정리

    GCC(GNU Compiler Collection) 컴파일러는 개발자의 편의를 위해 다양한 내장 함수(built-in functions)를 제공합니다. 이 함수들은 별도의 라이브러리 포함 없이 바로 사용할 수 있으며, 특히 비트 연산 관련 작업에서 성능과 코드 간결성 면에서 큰 장점을 가집니다. 이번 글에서는 자주 사용되는 대표적인 내장 함수 네 가지를 예제와 함께 살펴보겠습니다.1. __builtin_popcount(x) – 1비트 개수 세기__builtin_popcount()는 정수를 이진수로 표현했을 때 1의 개수를 반환하는

  15. C++에서 복소수 다루기: 클래스 직접 구현부터 std::complex까지

    C++에서는 실수부와 허수부를 멤버 변수로 가지는 클래스를 직접 정의해 복소수를 표현할 수 있습니다. 이 글에서는 복소수를 저장하는 클래스를 만들고, 두 복소수의 덧셈과 뺄셈을 처리한 뒤, 결과를 a+bi 형태로 읽기 좋게 출력하는 방법을 단계별로 살펴봅니다.복소수 클래스의 구성 요소예제에서 만들 복소수(complex) 클래스는 다음 요소들로 이루어집니다.멤버 변수 – 실수부(real)와 허수부(img)를 저장합니다.기본 생성자 – 복소수를 0+0i로 초기화합니다.매개변수 생성자 – 실수부와 허수부를 인자로 받아 초기화합니다.입력

  16. C++ 문자열 배열 정의하고 사용하는 방법 완벽 가이드

    C++에서 문자열 배열 정의하는 방법 이 글에서는 C++에서 문자열 배열을 정의하고 사용하는 방법에 대해 자세히 살펴보겠습니다. C 언어에는 별도의 문자열(string) 타입이 없었습니다. 대신 문자 배열(char array)을 사용해 문자열을 직접 만들어야 했으며, 여러 개의 문자열을 담으려면 2차원 문자 배열을 생성하고 각 행(row)마다 하나의 문자열을 저장하는 방식으로 구현해야 했습니다. 하지만 C++에는 std::string이라는 전용 클래스가 제공됩니다. 이 클래스의 객체를 활용하면 문자열 데이터를 훨씬 편리하고 효율적으

  17. C++ 전역 메모리 관리: 스택인가, 힙인가?

    C++ 프로그램의 메모리 구조 개요 C++ 프로그램이 실행되는 동안 변수는 주로 스택(stack)과 힙(heap) 두 가지 메모리 영역에 저장되며, 각 영역마다 생성과 소멸 방식이 다릅니다. 반면 전역 변수나 전역 데이터 구조는 이 어느 쪽에도 속하지 않고, 프로그램 시작 시 고정된 메모리 블록(데이터 세그먼트)에 할당되어 프로그램이 종료될 때까지 그 위치와 값이 유지됩니다. 스택(Stack): 자동으로 관리되는 메모리 스택은 함수 호출과 함께 동작하는 LIFO(Last In, First Out) 구조의 메모리 영역입니다. 함수

  18. C++ 변환 연산자 완벽 이해: 작동 원리와 예제 코드

    C++ 변환 연산자란? 이 글에서는 C++의 변환 연산자(conversion operator)가 무엇인지, 그리고 실제로 어떻게 동작하는지 알아보겠습니다. C++은 객체 지향 프로그래밍을 지원하기 때문에 실제 세계의 사물들을 구체 타입(concrete type)으로 표현하는 클래스를 만들 수 있습니다. 그런데 개발을 하다 보면 특정 클래스의 객체를 다른 클래스의 객체나 int, double 같은 기본 자료형(primitive data type)으로 변환해야 하는 경우가 자주 발생합니다. 이럴 때 사용하는 것이 바로 변환 연산자입니

  19. C++로 구현하는 해시 테이블 체이닝: 리스트 헤드 방식 완벽 가이드

    해시 테이블(Hash Table)은 키-값(key-value) 쌍을 저장하는 데 사용되는 대표적인 자료구조입니다. 해시 함수(Hash Function)는 삽입하거나 검색할 요소가 위치할 배열의 인덱스를 계산하는 역할을 담당합니다.이 글에서는 리스트 헤드(List Head)를 이용한 체이닝 방식으로 해시 테이블을 구현하는 C++ 프로그램을 소개합니다. 충돌(Collision)이 발생했을 때 연결 리스트를 통해 여러 요소를 관리하는 방식으로, 실무에서도 널리 사용되는 기법입니다.알고리즘 개요1. 삽입(Insert)Begin De

  20. C++ 단일 연결 리스트로 해시 테이블 구현하기: 삽입·삭제·검색 완벽 가이드

    해시 테이블(Hash Table)은 키-값(key-value) 쌍을 저장하는 대표적인 자료구조입니다. 해시 함수(Hash Function)는 저장하거나 검색할 요소가 위치할 배열의 인덱스를 계산하는 역할을 담당합니다.이 글에서는 단일 연결 리스트(singly linked list)를 체이닝(chaining) 방식으로 활용해 해시 테이블을 구현하는 C++ 프로그램을 단계별로 살펴보겠습니다.해시 테이블과 체이닝 방식의 이해서로 다른 키가 동일한 해시 값을 가지는 현상을 충돌(Collision)이라고 합니다. 체이닝 방식은 각 버킷(bu

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:42/300  20-컴퓨터/Page Goto:1 36 37 38 39 40 41 42 43 44 45 46 47 48