프로그래밍 언어 93

C++ 람다 식

람다 식이란? C++ 11 이상에서는 람다 식(종종 람다라고도 함)은 함수에 인수로 호출되거나 전달되는 윛에서 익명 함수 개체(클로저)를 정의하는 편리한 방법입니다. 일반적으로 람다는 알고리즘 또는 비동기 함수에 전달되는 몇 줄의 코드를 캡슐화하는 데 사용됩니다. 이 문서에서는 람다를 정의하고 다른 프로그래밍 기술과 비교합니다. 해당 장점을 설명하고 몇 가지 기본 예제를 제공합니다. 람다 식의 일부 다음 함수에 서 번째 인수 std::sort()로 전달되는 간단한 람다입니다.#include #include void abssort(float* x, unsigned n) { std::sort(x, x + n, //람다 표현식 시작 [](float a, float b) { return (std::abs(a) ..

C++ STL Set

set Class  C++ 표준 라이브러리 컨테이너 클래스 set는컬렉션에서 데이터를 저장하고 검색하는 데 사용됩니다. Set은 이진 탐색 트리 기반이고 오름차순이다 O(logn)의 속도를 가진다. 요소의 set 값은 고유하며 데이터가 자동으로 정렬되는 키값으로 사용됩니다.요소의 set 값은 직접 변경되지 않을 수 있습니다.대신, 이전 값을 삭제하고 새 값의 요소를 삽입해야 합니다.  즉, set은 중복없이 저장하는 자료구조입니다.일종의 집합이라고 생각하시면 됩니다. set의 특징으로는 1. 숫자든 문자든 중복을 없엔다.2. 삽입하는 순서에 상관없이 정렬되서 입력이 된다. 이 특징을 모두 만족시킬 수 있는 자료구조는 이진트리 입니다. 즉, set은 벨런스 트리로 Red-Black 트리로 만들어져 있습니다..

C++ 기억 존속 시간, 사용 범위

기억 존속 기간  여러 개의 파일로 이루어진 하나의 프로그램을 만드는 것은 분할 컴파일 과정입니다.기억 공간의 유형은 여러 파일에 걸쳐 정보를 공유하는 방법에 영향을 주기 때문에,이러한 것들은 메모리에 대해 알아두는 과정 즉 기억 존속 기간과 관련있습니다. C++은 이러한 기억 존속 기간이 네 가지 유형으로 데이터를 저장합니다.이 네 가지 유형은 메모리에 데이터를 존속시키는 시간에서 차이가 납니다. 자동 기억 존속 시간 (automatic storage duration) :함수 매개변수를 포함하여, 함수 정의 안에 선언된 변수는 자동 기억 존속을 가진다.그들은 프로그램 실행이 그들을 정의하고 있는 함수나 블록 안으로 들어갈 때 생성된다.그리고 그들에게 대입된 메모리는, 프로그램 실행이 해당 함수나 블록을..

템플릿

템플릿이란?템플릿은 C++에서 제네릭 프로그래밍의 기초입니다.강력한 형식의 언어인 C++에서는 모든 변수에 프로그래머가 명시적으로 선언하거나,컴파일러에서 추론한 특정 형식이 있어야 합니다.그러나 많은 데이터 구조와 알고리즘이 어떤 형식에서 작동하든 동일하게 보입니다.템플릿을 사용하면 클래스 또는 함수의 작업을 정의하고,그러한 작업이 어떤 구체적인 형식에서 작동해야 하는지를 사용자가 지정하도록 할 수 있습니다. 템플릿 정의 및 사용 템플릿은 사용자가 템플릿 매개 변수에 대해 제공하는 인수를 기반으로컴파일 시간에 일반 형식 또는 함수를 생성하는 구문입니다. 예를 들어 다음과 같이 함수 템플릿을 정의할 수 있습니다. tamplate T minimum(const T& lhs, const T& rhs){ retu..

C# out 키워드

out 키워드는 다음 두 가지 상황에서 out 키워드를 사용할 수 있습니다. 값이 아닌 참조로 메서드에 인수를 전달할 수 있도록 하는 매개 변수 한정자로 사용형식 매개 변수를 공변(covariant) 으로 지정하는 인터페이스 및 대리자에 대한제너릭 형식 매개  변수 선언에서 사용   out의 매개 변수 한정자 사용 경우 out의 매개 변수 한정자의 사용을 말하기전에,매개 변수 한정자가 무엇인지 간단히 짚고 넘어가겠습니다. 매개 변수 한정자란?기본적으로 C#의 인수는 call by value로 함수에 전달됩니다.이는 변수의 복사본이 메서드에 전달된다는 의미와 같습니다. (= 깊은 복사) 값 형식의 경우 값의 복사본이 메서드에 전달되며, ( = 깊은 복사 )참조 형식의 경우 참조의 복사본이 메서드에 전달됩니..

파일 복사 프로그램

복사할 파일명과 복사 후 생성되는 파일명을 입력받아서 파일을 복사하는 프로그램을 작성하라. 단, txt파일 뿐만 아니라 이미지 파일 등.. 모든 종류의 파일에 다 동일하게 적용할 수 있어야 한다. 복사 진행 과정을 백분율로 화면에 표시해주도록하고 n바이트씩 복사하도록 한다. ex) 4바이트 - 원본 파일 : source.txt - 대상 파일 : dest.txt#define _CRT_SECURE_NO_WARNINGS #include #include #include void copy_file(const char* src_file, const char* dest_file, size_t buffer_size) { FILE* src, * dest; char* buffer; size_t bytes_..

함수와 스택 그리고 호출 스택

너무 짧은 코드의 함수화는 주소지를 찾아가야하기 때문에 비효율적이다.하지만 inline 함수는 자주 쓰이기 때문에 짧은 코드를 활용하기 좋다. C/C++ 및 어셈블러는 x64 환경에서RSP의 현재 주소를 초과하는 모든 메모리는 휘발성으로 간주된다.OS 또는 디버거는 사용자 디버그 세션 또는 인터럽트 처리기 중에 이 메모리를 덮어쓸 수 있다. 따라서 스택 프레임에 대한 값을 읽거나 쓰기 전에 항상 RSP를 설정해야 한다.이 섹션에서는 로컬 변수에 대한 스택 공간 할당 및 alloca 내장 함수에 대해 설명한다. 스택 할당 함수의 프롤로그는1) 로컬 변수, 2) 저장된 레지스터, 3) 스택 매개 변수 및 4) 레지스터 매개변수에 대한 스택 공간을 할당한다. 매개 변수 영역은 항상 스택의 맨 아래에 있다(al..

동적 바인딩 정적 바인딩

바인딩이란? "컴퓨터 프로그래밍에서 각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것" 프로그램 내에서 변수, 배열, 라벨, 절차 등의 명칭, 즉 식별자가 그 상대인 메모리 주소, 데이터형 또는 실제값으로 배정되는 것이 이에 해당되며, 원시 프로그램의 컴파일링 또는 링크 시에 확정되는 바인딩을 정적 바인딩이라 하고, 프로그램의 실행되는 과정에서 바인딩되는 것을 동적 바인딩이라고 한다. 프로그래밍에서는 바인딩을 가급적 뒤로 미루도록 권고하고 있다. 즉, 프로그래머가 코딩을 해서 컴파일을 하게되면 각각의 코드가 메모리 어딘가에 저장되고, 함수를 호출하는 부분에는 그 함수가 저장된 메모리의 주소값이 저장되며 프로그래머가 값을 변경할 수 없는 상태가 된다. 정적 바인딩이란? 실행 이..

C++/WinRT를 통한 동시성 및 비동기 작업

C++/WinRT를 통한 동시성 및 비동기 작업 이 게시글의 내용비동기 작업 및 Windows 런타임 "비동기" 함수호출 스레드 차단코루틴 작성Windows 런타임 형식을 비동기식으로 반환 해당 게시글의 내용 중에서 중요하게 볼 것 이 항목에서는 코루틴 및 co_await 의 개념을 소개하며,UI 및 비 UI 애플리케이션 모두에서 사용하는 것이 좋다.간단히 하기 위해서는 이 소개 항목의 코드 예제에서는 대부분Windows 콘솔 애플리케이션 (C++/WinRT)프로젝트를 보여준다.이 항목의 뒷부분에 나오는 코드 예제에서는 코루틴을 사용하지만,편의상 콘솔 애플리케이션 예제에서 종료 직전에 차단 get함수 호출도 사용하므로출력 인쇄를 마치기 전에 애플리케이션이 종료되지 않는다.UI 스레드에서 이 작업 (차단 ..