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

C++

  1. 고정 차수 수열로 그래프를 생성하는 C++ 프로그램

    개요 이 C++ 프로그램은 사용자가 입력한 차수 수열(degree sequence)에 대응하는 무방향 그래프(undirected graph)를 생성하고, 그 결과를 인접 행렬(adjacency matrix) 형태로 출력합니다. 알고리즘의 시간 복잡도는 O(v²)이며, 자기 루프(self-loop)와 중복 간선(multiple edge)은 포함하지 않습니다. 차수 수열이란 그래프를 구성하는 각 정점에 연결된 간선의 개수를 순서대로 나열한 값입니다. 이 프로그램은 모든 정점 쌍을 검사하면서 두 정점의 남은 차수가 모두 0보다 클 때

  2. 인시던스 리스트(Incidence List)로 그래프를 표현하는 C++ 프로그램

    이 프로그램은 인시던스 리스트(incidence list) 방식으로 그래프를 표현합니다. 인시던스 리스트란 그래프의 각 간선이 연결하고 있는 두 정점을 나열함으로써 그래프의 구조를 나타내는 방법입니다. 이 알고리즘의 시간 복잡도는 O(e)로, 간선의 개수에 비례하여 매우 효율적입니다.알고리즘시작 그래프의 정점 개수 v와 간선 개수 e를 입력받는다. 주어진 그래프의 e개 정점 쌍을 e[][] 배열에 입력받는다. 각 간선에 대해 해당 연결에 포함된 정점들을 출력한다. 종료예제 코드#include<iostream&g

  3. C++ 2차원 배열로 그래프 표현하기: 인접 행렬 구현 방법

    C++에서는 2차원 배열을 이용해 그래프(graph)를 아주 간단하게 표현할 수 있습니다. 이번 글에서는 정점(vertex)과 간선(edge) 정보를 입력받아 인접 행렬(adjacency matrix) 형태로 그래프를 생성하고 출력하는 프로그램을 단계별로 살펴보겠습니다.이 알고리즘의 시간 복잡도는 O(V²)입니다. 정점이 V개일 때 V×V 크기의 행렬 전체를 확인해야 하기 때문입니다.알고리즘그래프의 정점 개수 v와 간선 개수 e를 입력받습니다.graph[][] 행렬에 동적으로 메모리를 할당하고, 모든 요소를 0으로 초기화합니다.간선

  4. C++로 구현하는 행렬 전치(Transpose) 프로그램

    이 프로그램은 사용자로부터 행렬을 입력받아 그 전치 행렬(Transpose Matrix)을 출력합니다. 전치 행렬이란 원래 행렬의 행과 열을 서로 맞바꾼 행렬을 의미합니다. 즉, 기존 행렬의 행은 열이 되고, 열은 행이 됩니다.알고리즘시작 행렬의 행(row) 개수와 열(column) 개수를 입력받는다. 행렬의 각 요소를 입력받아 행렬 A에 저장한다. 행과 열을 서로 교환하여 전치 행렬을 구한다. 원본 행렬과 전치 행렬을 모두 출력한다. 끝.예제 코드#include<iostream> using name

  5. C/C++ 조건 연산자(삼항 연산자) 사용 방법 완벽 가이드

    C/C++ 조건 연산자란?C와 C++에서 조건 연산자(Conditional Operator)는 흔히 삼항 연산자(Ternary Operator)라고도 불립니다. 이름 그대로 세 개의 피연산자를 사용하는 것이 특징입니다.Exp1 ? Exp2 : Exp3;여기서 Exp1, Exp2, Exp3은 각각 표현식(expression)이며, 콜론(:)의 위치와 용도에 주목할 필요가 있습니다.조건 연산자의 동작 원리? 연산식의 값은 다음과 같은 순서로 결정됩니다.먼저 Exp1이 평가됩니다.Exp1이 참(true)이면 Exp2가 평가되고, 그 결과

  6. 전위 증가(++b) vs 후위 증가(b++): C, C++, Java, C# 동작 차이 완벽 정리

    프로그래밍 언어에서 전위 증가 연산자(Pre Increment, ++b)와 후위 증가 연산자(Post Increment, b++)는 모두 변수의 값을 1만큼 증가시키는 연산자입니다. 두 연산자의 핵심적인 차이는 값이 증가되는 시점에 있습니다. 이 글에서는 C, C++, Java, C# 네 가지 언어에서 각 연산자가 어떻게 동작하는지 예제 코드와 함께 자세히 살펴봅니다. 전위 증가 연산자(Pre Increment: ++b) 전위 증가 연산자는 변수의 값을 표현식에서 사용하기 이전에 먼저 증가시킵니다. 즉, 값이 먼저 1 증가한 후,

  7. C++ 복사 생성자와 대입 연산자의 차이점 완벽 정리

    C++에서 복사 생성자(Copy Constructor)와 대입 연산자(Assignment Operator)는 모두 한 객체를 다른 객체를 기반으로 설정할 때 사용됩니다. 하지만 두 가지의 동작 방식에는 중요한 차이가 있습니다. 복사 생성자는 새로운 객체를 위해 별도의 메모리 블록을 생성하는 반면, 대입 연산자는 새로운 메모리 공간을 만들지 않고 기존 메모리 블록을 활용한다는 점입니다.복사 생성자(Copy Constructor)란?복사 생성자는 이미 존재하는 객체를 인자로 받아 새로운 객체를 초기화하는 특수한 생성자입니다. 클래스 내

  8. C++ 화살표 연산자(->)란? 점(.) 연산자와의 차이점 완벽 정리

    C++에서 점(.) 연산자와 ) 연산자는 모두 클래스나 구조체의 멤버에 접근할 때 사용됩니다. 두 연산자의 역할은 비슷하지만, 사용되는 상황이 다릅니다. C++에서 class, struct, union으로 선언된 타입은 모두 클래스 타입(class type)으로 간주되므로, 아래의 설명은 이 세 가지 타입 모두에 적용됩니다. ) 연산자의 차이 a.b : b가 객체 a(또는 객체에 대한 참조)의 멤버일 때만 사용됩니다. 즉, a.b에서 a는 항상 실제 객체이거나 객체에 대한 참조여야 합니다. a->b : 본질적으로 (*a)

  9. C++에서 new 키워드와 operator new의 차이점 완벽 정리

    C++에서 새로운 객체를 생성하려면 먼저 메모리에 메모리 블록을 할당한 뒤, 생성자를 호출하여 해당 메모리를 초기화해야 합니다. 이 과정에서 new 키워드를 사용하면 두 가지 작업이 한 번에 처리되지만, operator new는 단순히 메모리 공간만 할당한다는 중요한 차이가 있습니다.new 키워드란?new 연산자는 힙(heap) 영역에 대한 메모리 할당을 요청하는 특수한 연산자입니다. 충분한 메모리가 확보된 경우에만 new 연산자가 해당 메모리를 포인터 변수에 연결하고 초기화합니다. 일반적인 new 키워드로 객체를 생성하면 다음 두

  10. C++ 형변환(캐스트) 연산자 완벽 가이드

    캐스트(cast)는 하나의 데이터 타입을 다른 데이터 타입으로 강제로 변환하는 특수 연산자입니다. 연산자로서 캐스트는 단항(unary) 연산자이며, 다른 단항 연산자들과 동일한 우선순위를 가집니다.대부분의 C++ 컴파일러가 지원하는 가장 일반적인 캐스트 문법은 다음과 같습니다.(type) expression여기서 type은 변환하고자 하는 목표 데이터 타입을 의미합니다. C++는 이 기본 문법 외에도 아래와 같은 네 가지 형변환 연산자를 추가로 지원합니다.C++의 네 가지 형변환 연산자1. const_cast<type>(

  11. C++ 복사 생성자와 할당 연산자의 차이점 완벽 정리

    C++에서 복사 생성자(Copy Constructor)와 할당 연산자(Assignment Operator)는 모두 한 객체를 다른 객체로 초기화하거나 대입할 때 사용됩니다. 그러나 두 가지의 핵심적인 차이가 존재합니다. 복사 생성자는 새로운 객체를 위해 별도의 메모리 블록을 생성하는 반면, 할당 연산자는 새로운 메모리 공간을 만들지 않고 참조 변수를 통해 기존 메모리 블록을 가리키게 됩니다.복사 생성자 문법classname (const classname &obj) { // 생성자 본문 }할당 연산자 문법classname

  12. C++에서 오버로드할 수 없는 연산자 총정리

    C++에서는 +, -, [], -> 등 대부분의 연산자를 사용자 정의 타입에 맞게 오버로드(재정의)할 수 있습니다. 하지만 모든 연산자가 오버로드 가능한 것은 아니며, 일부 연산자는 언어 차원에서 오버로드가 금지되어 있습니다.오버로드할 수 없는 연산자 목록. — 멤버 접근 연산자 (점 연산자)? : — 삼항 조건 연산자:: — 범위 지정(scope resolution) 연산자.* — 멤버 포인터 접근 연산자sizeof — 객체 크기 연산자typeid — 객체 타입 조회 연산자오버로드가 금지된 이유이 연산들은 오버로드를 허용할

  13. C++ 스트림 삽입(<<) 및 추출(>>) 연산자 오버로딩 완벽 가이드

    C++는 스트림 추출 연산자(>>)와 스트림 삽입 연산자(<<)를 사용해 int, double 같은 기본 데이터 타입을 손쉽게 입력하고 출력할 수 있습니다. 흥미로운 점은 이 두 연산자를 오버로딩하면 객체처럼 사용자가 직접 정의한 타입(user-defined type)에 대해서도 동일한 방식으로 입출력을 수행할 수 있다는 것입니다.여기서 중요한 포인트가 하나 있습니다. 연산자 오버로딩 함수는 반드시 클래스의 friend로 선언해야 합니다. 그 이유는 이 함수가 객체를 생성하지 않은 상태에서도 호출될 수 있어야

  14. C++ std::unordered_multimap::operator=() 함수 완벽 정리

    C++의 std::unordered_multimap::operator=() 함수는 기존 내용을 모두 대체하면서 새로운 내용을 할당하는 역할을 하며, 필요에 따라 컨테이너의 크기도 자동으로 조정합니다.이 함수는 <unordered_map> 헤더에 선언되어 있으며, 복사 대입(copy assignment) 방식으로 동작합니다.C++11 문법unordered_multimap& operator=(const unordered_multimap& umm);매개변수umm - 동일한 타입의 다른 unordered_multi

  15. C/C++ 쉼표 연산자(Comma Operator) 완벽 이해하기

    쉼표 연산자란?C/C++에서 쉼표 연산자(comma operator)의 목적은 여러 개의 표현식을 하나로 이어 붙여 순차적으로 실행하는 것입니다. 쉼표로 구분된 표현식 목록의 값은 항상 가장 오른쪽에 있는 표현식의 값이 됩니다. 즉, 쉼표 연산자는 일련의 연산이 차례대로 수행되도록 만드는 역할을 합니다.이때 나머지 표현식들의 값은 모두 버려집니다. 따라서 가장 오른쪽 표현식의 값이 전체 쉼표 구분 표현식의 최종 결과값이 됩니다. 예를 들어 다음과 같습니다.var = (count = 19, incr = 10, count+1);위 코드

  16. C++ 연산자 오버로딩 규칙 총정리: 반드시 알아야 할 7가지 제약 조건

    C++는 컴파일 타임 다형성(compile-time polymorphism)을 지원하는 언어입니다. 컴파일 타임 다형성의 대표적인 예로는 함수 오버로딩(function overloading)과 연산자 오버로딩(operator overloading)이 있습니다.연산자 오버로딩은 기존 연산자를 사용자 정의 타입에 맞게 재정의할 수 있게 해주는 강력한 기능이지만, 자유롭게 사용할 수 있는 것은 아닙니다. C++에서 연산자 오버로딩을 사용할 때 반드시 지켜야 하는 규칙들이 존재합니다. 아래에서 그 규칙들을 하나씩 살펴보겠습니다.C++ 연산

  17. C++에서 조건문 없이 '짝수' 또는 '홀수'를 판별해 출력하는 프로그램

    개요이 글에서는 비교 연산자(<, <=, !=, >, >=, ==)나 if문 같은 조건문을 전혀 사용하지 않고, 숫자가 홀수인지 짝수인지 판별하여 출력하는 방법을 알아봅니다.평소라면 조건문을 활용하면 아주 간단하게 홀수·짝수를 구분할 수 있습니다. 숫자를 2로 나눈 나머지가 0이면 짝수, 아니면 홀수라고 판단하거나, 숫자와 1을 비트 AND 연산했을 때 결과가 0이면 짝수, 그렇지 않으면 홀수로 처리하면 됩니다.하지만 여기서는 어떠한 형태의 조건문도 사용할 수 없다는 것이 핵심입니다. 이번 글에서는 두 가지 서

  18. C++로 시스템 전체 메모리를 채우는 프로그램 작성하기

    이 글에서는 간단한 C++ 프로그램을 작성하여 시스템의 전체 메모리를 채우는 방법을 알아보겠습니다. 핵심 로직은 매우 단순합니다. 동적 메모리 할당(dynamic memory allocation)을 이용해 정수형 변수를 계속해서 새로 생성하면, 변수가 무한히 만들어지면서 주 메모리(램) 전체가 가득 차게 됩니다.동적 메모리 할당이란?C++에서는 new 키워드를 사용하여 실행 중에 필요한 만큼의 메모리 공간을 동적으로 할당할 수 있습니다. 기본적인 문법은 다음과 같습니다.pointer_var = new data_type반대로 할당된

  19. C++로 난수(Random Number)를 생성하는 방법 완벽 가이드

    C++에서 난수를 생성하는 방법을 알아보겠습니다. 이 글에서는 0부터 특정 값까지의 범위에서 난수를 생성하는 방법을 다룹니다. (이 예제에서는 최댓값을 100으로 설정했습니다.)srand() 함수란?난수를 생성하기 위해 C 표준 라이브러리에서 제공하는 srand() 함수를 사용합니다. 이 함수의 원형은 void srand(unsigned int seed)로, rand() 함수가 사용하는 의사 난수 생성기(pseudo-random number generator)의 시드(seed)를 초기화하는 역할을 합니다.srand() 함수의 선언

  20. 섭씨를 화씨로 변환하는 C++ 프로그램

    이 글에서는 C++을 사용하여 섭씨(Celsius) 온도를 화씨(Fahrenheit)로 변환하는 방법을 알아봅니다. 두 온도 단위 사이의 변환 공식은 다음과 같이 매우 간단합니다.공식을 풀어서 설명하면, 섭씨 온도에 9/5(=1.8)를 곱한 뒤 32를 더하면 화씨 온도가 됩니다.알고리즘프로그램의 동작 순서는 아래와 같습니다.시작 섭씨 온도를 입력받아 C에 저장한다 F = (9 × C / 5) + 32 를 계산한다 계산된 화씨 온도 F를 출력한다 종료예제 코드아래는 위 알고리즘을 그대로 구현한 C++ 코드입니다.#inclu

Total 5981 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:28/300  20-컴퓨터/Page Goto:1 22 23 24 25 26 27 28 29 30 31 32 33 34