이 프로그램에서 우리는 주어진 모서리 e에 대한 임의의 방향성 순환 그래프를 생성합니다. 이 프로그램의 시간 복잡도는 O(e*v*e)입니다. 알고리즘 Begin function GenerateRandomGraphs(), has ‘e’ as the number edges in the argument list. generate a connection between two random numbers, for sample a small case, limit the numb
이것은 C++ 프로그램이 주어진 차수 시퀀스에 대한 무방향 그래프를 나타냅니다. 이 알고리즘의 시간 복잡도는 O(v*v)이며 자체 에지 및 다중 에지를 포함하지 않습니다. 알고리즘 Begin To create the graph, Create the first loop to connect each vertex ‘i’. Create second nested loop to connect the vertex ‘i’ to ever
이 프로그램은 발생률 목록을 사용하여 그래프를 나타내며 이 알고리즘의 시간 복잡도는 O(e)입니다. 알고리즘 Begin Take the input of the number of vertex ‘v’ and edges ‘e’ and also take the input of ‘e’ pairs of vertexes of the given graph in e[][]. For each edge print the corresponding vertex involved
2차원 배열을 이용하여 그래프를 표현한 C++ 프로그램입니다. 이 알고리즘의 시간 복잡도는 O(v*v)입니다. 알고리즘 Begin Take the input of the number of vertex ‘v’ and edges ‘e’. Assign memory to the graph[][] matrix. Take the input of ‘e’ pairs of vertexes of the given graph in graph[][]. For each
이 프로그램에서 우리는 행렬을 취하고 행렬의 전치를 인쇄합니다. 전치 행렬에서 행은 열이 되고 그 반대도 마찬가지입니다. 알고리즘 Begin Take number of rows and columns of the matrix. Take The elements of the matrix and stored in the matrix ‘A’. The transpose matrix is found by exchanging the rows with columns and columns with rows.
이 조건부 연산자는 삼항 연산자라고도 합니다. 이 연산자에는 3단계가 있습니다. Exp1 ? Exp2 : Exp3; 여기서 Exp1, Exp2 및 Exp3은 표현식입니다. 결장의 사용과 위치를 확인하십시오. 의 값은 ? 표현식은 다음과 같이 결정됩니다. Exp1이 평가됩니다. true이면 Exp2가 평가되어 전체 ? 표현. Exp1이 false이면 Exp3이 평가되고 그 값이 표현식의 값이 됩니다. ? 세 개의 피연산자가 필요하고 다음 형식을 갖는 if-else 문을 대체하는 데 사용할 수 있기 때문에 삼항 연산자라고 합니다.
사전 증가 및 사후 증가 두 연산자는 모두 증가 연산으로 사용됩니다. 사전 증가 연산자는 표현식에서 사용하기 전에 일부 변수의 값을 증가시키는 데 사용됩니다. 사전 증가에서 값은 처음에 증가된 다음 표현식 내부에서 사용됩니다. 표현식이 a =++b인 경우; b는 처음에 5를 유지하고, a는 6을 유지합니다. b를 1만큼 증가시킨 다음 a의 값을 설정합니다. 예시 코드 #include <iostream> using namespace std; main () { int a, b = 15; a = ++b; co
복사 생성자와 할당 연산자는 한 개체를 다른 개체로 초기화하는 데 사용됩니다. 이들의 주요 차이점은 복사 생성자가 새 개체에 대해 별도의 메모리 블록을 생성한다는 것입니다. 그러나 할당 연산자는 새로운 메모리 공간을 만들지 않습니다. 참조 변수를 사용하여 이전 메모리 블록을 가리킵니다. 복사 생성자(구문) classname (const classname &obj) { // body of constructor } 할당 연산자(구문) classname Ob1, Ob2; Ob2 = Ob1; 복사 생성자와 할당 연산자의 자세
점 및 화살표 연산자는 모두 C++에서 클래스 또는 구조체의 멤버에 액세스하는 데 사용됩니다. 이들은 단지 다른 시나리오에서 사용됩니다. C++에서 클래스, 구조체 또는 공용체로 선언된 형식은 클래스 형식으로 간주됩니다. 따라서 다음은 이 세 가지를 모두 나타냅니다. a.b는 b가 객체의 구성원(또는 객체에 대한 참조)인 경우에만 사용됩니다. 따라서 a.b의 경우 항상 클래스의 실제 객체(또는 객체에 대한 참조)가 됩니다. bis가 가리키는 객체의 속성 b에 액세스합니다. 를 오버로드하는 클래스의 개체인 경우(일반적인
C++에서 새 객체를 생성하려면 메모리에 메모리 블록을 생성한 다음 생성자를 호출하여 메모리 블록을 초기화해야 합니다. new 키워드를 사용하여 메모리 요소를 생성할 수 있습니다. 이 새 연산자는 두 개의 연속 작업을 수행하고 있습니다. 하지만 new 연산자는 메모리 공간만 생성합니다. 새 키워드 new 연산자는 힙 섹션에 대한 메모리 할당 요청을 나타내는 특수한 유형의 연산자입니다. 충분한 메모리를 사용할 수 있는 경우 새 연산자만 포인터 변수에 대한 메모리를 초기화합니다. 일반적인 newkeyword를 사용하여 객체를 생성하면
캐스트는 한 데이터 유형을 다른 데이터 유형으로 강제 변환하는 특수 연산자입니다. 연산자로서 캐스트는 단항이며 다른 단항 연산자와 동일한 우선 순위를 갖습니다. 대부분의 C++ 컴파일러에서 지원하는 가장 일반적인 캐스트는 다음과 같습니다. (type) expression 여기서 type은 원하는 데이터 유형입니다. C++에서 지원하는 다른 캐스팅 연산자가 있으며 아래에 나열되어 있습니다. - ? const_cast(expr) const_cast 연산자는 캐스트에서 const 및/또는 volatile을 명시적으로 재정의하는
복사 생성자와 할당 연산자는 한 개체를 다른 개체로 초기화하는 데 사용됩니다. 이들의 주요 차이점은 복사 생성자가 새 개체에 대해 별도의 메모리 블록을 생성한다는 것입니다. 그러나 할당 연산자는 새로운 메모리 공간을 만들지 않습니다. 참조 변수를 사용하여 이전 메모리 블록을 가리킵니다. 복사 생성자(구문) classname (const classname &obj) { // body of constructor } 할당 연산자(구문) classname Ob1, Ob2; Ob2 = Ob1; 복사 생성자와 할당 연산자의 자세
등과 같은 일부 연산자를 오버로드할 수 있습니다. 그러나 어떤 연산자도 init에 오버로드할 수 없습니다. 일부 연산자는 오버로드할 수 없습니다. 이러한 연산자는 다음과 같습니다. ? . 회원 액세스 또는 점 연산자 ? ? :” 삼항 또는 조건부 연산자 ? :: 범위 확인 연산자 ? .* 멤버 연산자에 대한 포인터 ? sizeof 개체 크기 연산자 ? typeid 개체 유형 연산자 이러한 연산자는 오버로드하면 심각한 프로그래밍 문제가 발생하기 때문에 오버로드될 수 없습니다. 예를 들어 sizeof 연산자는 개체 또는 데이터
및 스트림 삽입 연산자 <<를 사용하여 내장 데이터 유형을 입력 및 출력할 수 있습니다. 스트림 삽입 및 스트림 추출 연산자는 개체와 같은 사용자 정의 유형에 대한 입력 및 출력을 수행하기 위해 오버로드될 수도 있습니다. 여기서 연산자 오버로딩 함수는 객체를 생성하지 않고 호출되기 때문에 클래스의 친구로 만드는 것이 중요합니다. 와 삽입 연산자 <<.를 어떻게 설명하는지 설명합니다. 예시 코드 #include <iostream> using namespace std; class Distance {
C++ 함수 std::unordered_multimap::operator=()는 이전 내용을 대체하여 unordered_multimap에 새 내용을 할당하고 필요한 경우 크기를 수정합니다. 다음은 std::unordered_multimap::operator=() 함수 formstd::unordered_map() 헤더에 대한 선언입니다. C++11(구문) unordered_multimap& operator=(const unordered_multimap& umm); 매개변수 umm - Another unordered_m
쉼표 연산자의 목적은 여러 표현식을 함께 묶는 것입니다. 쉼표로 구분된 표현식 목록의 값은 맨 오른쪽 표현식의 값입니다. 기본적으로 쉼표의 효과는 일련의 작업이 수행되도록 하는 것입니다. 다른 표현식의 값은 무시됩니다. 즉, 오른쪽의 표현식이 쉼표로 구분된 전체 표현식의 값이 됩니다. 예를 들어 var = (count = 19, incr = 10, count+1); 여기서 먼저 count에 값 19를 할당하고 incr에 값 10을 할당한 다음 count에 1을 추가하고 마지막으로 var에 가장 오른쪽 표현식 count+1의 값(
C++에서는 컴파일 시간 다형성을 지원합니다. 컴파일 시간 다형성의 예는 함수 오버로딩과 연산자 오버로딩입니다. 연산자 오버로딩에 대한 몇 가지 규칙이 있습니다. 이러한 규칙은 다음과 같습니다. 내장 연산자만 오버로드할 수 있습니다. 일부 연산자가 C++에 없으면 오버로드할 수 없습니다. 오퍼레이터의 아리티는 변경할 수 없습니다. 연산자의 우선 순위는 동일하게 유지됩니다. 오버로드된 연산자는 함수 호출 연산자 ()를 제외하고 기본 매개변수를 보유할 수 없습니다. 내장 데이터 유형에 대한 연산자를 오버로드
이 섹션에서는 (<, =, ==)와 같은 조건문을 사용하지 않고 숫자가 홀수인지 짝수인지 확인하는 방법을 볼 것입니다. 조건문을 사용하여 홀수 또는 짝수를 쉽게 확인할 수 있습니다. 숫자를 2로 나눈 다음 나머지가 0인지 확인할 수 있습니다. 0이면 짝수입니다. 그렇지 않으면 숫자와 1로 AND 연산을 수행할 수 있습니다. 답이 0이면 짝수이고 그렇지 않으면 홀수입니다. 여기에서는 조건문을 사용할 수 없습니다. 홀수 또는 짝수를 확인하는 두 가지 다른 방법이 있습니다. 방법 1 여기서 우리는 문자열 배열을 생성할 것입니다. 인
이 기사에서는 간단한 C++ 프로그램을 작성하여 전체 메모리를 채우는 방법을 볼 것입니다. 여기서 논리는 매우 간단합니다. 우리는 동적 메모리 할당을 사용하여 새로운 정수 변수를 생성할 것입니다. 일부 변수를 계속해서 생성하면 전체 기본 메모리를 채울 것입니다. C++에서 메모리 공간을 동적으로 할당하려면 new 키워드를 사용할 수 있습니다. new 연산자의 기본 문법은 아래와 같습니다. pointer_var = new data_type 메모리 공간을 할당 해제하기 위해 delete 키워드를 사용할 수 있습니다. 구문은 del
C++를 사용하여 난수를 생성하는 방법을 살펴보겠습니다. 여기서 우리는 범위 0에서 어떤 값까지의 난수를 생성하고 있습니다. (이 프로그램에서 최대값은 100입니다.) 이 작업을 수행하기 위해 srand() 함수를 사용하고 있습니다. 이것은 C 라이브러리에 있습니다. void srand(unsigned int seed) 함수 rand 함수에서 사용하는 난수 생성기 시드 . srand() 선언은 아래와 같습니다. void srand(unsigned int seed) seed라는 매개변수를 사용합니다. 의사 난수 생성기 알고리즘에