프로그래밍 언어 64

STL 여섯 가지 주요 컴포넌트 - 컨테이너 - 시퀀스 컨테이너

STL에는 여섯 가지 주요 컴포넌트가 있다. 컨테이너, 제네릭 알고리즘, 반복자, 함수 객체, 어댑터, 할당기가 포함되어 있다. STL에는 두 가지 종류의 컨테이너가 있는데,하나는 시퀀스 컨테이너이고, 다른 하나는 정렬 연관 컨테이너이다. 시퀀스 컨테이너는 타입이 동일한 객체들을 선형으로 구성한 컬렉션이다.STL의 시퀀스 컨테이너에는 다음 세 가지 종류가 있다. vector : 가변 길이 시퀀스를 임의 접근할 수 있으며,시퀀스 맨 끝에서 수행되는 삽입과 삭제는 아모타이즈드 상수 시간에 수행이 가능하다.(여기서 임의 접근이 가능하다는 것은시퀀스의 i번째 원소를 접근하는데 걸리는 시간이 상수 시간이라는 것을 의미한다.이는 다시 말해, i값에 상관없이 소요 시간은 항상 일정하다는 뜻이다.) deque : 이것..

* const 와 reference

레퍼런스도 이제 어셈수준에서는 포인터와 똑같이 작동한다. c는 어셈블리어를 제외하면,가장 기계어와 가까운 고급언어이다. c에 없는 기능이 어떠한 언어에 추가되었다면,이는 사용자의 편의성에 의해 고급 (엔지니어 or) 프로그래머가 제작한 것이다. 그렇다면 c에 없는 c++에 있는 레퍼런스를 만드려 한다면 어떻게 만드는 것이 좋은가? * const 를 쓰면 된다. * const는 선언과 동시에 초기화해줘야하며,실제로 레퍼런스와 * const의 초기화 오류는 똑같이 작동된다.  다음과 같이 초기화 한 후에, 값을 바꿀 수 없다는 점, 포인터로 해당 기능을 만들 수 있다는 점은* const를 쓰면 C++의 레퍼런스와 같이 사용할 수 있다.

함수 뒤에 const? 너 누군데

멤버 함수 뒤에 const를 붙이면const 키워드로 멤버 함수를 선언하면 함수가 자신이 호출되는 개체를 수정하지 않는 "읽기 전용" 함수로 지정하는 것이다. const 객체들은 const 맴버함수만 호출할수 있다.그렇다고 일반 객체는 const가 뒤에 있는 맴버함수도 가능하지 않다는 것은 아니다. int getMonth() const; // A read-only function 그럼 앞에 쓰면? 반환값을 상수화 하는 것이다.const int A(); // 반환값을 상수화한다. 주로 참조값으로 반환이기 때문에 const를 붙여줘야 할 때 쓰인다.  그럼 매개변수에 const는?매개변수를 call by reference일때 즉 참조값으로 받을때 사용한다.속도는 높이고 싶은데 참조값을 변경하기 싫을때..

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 값은 고유하며 데이터가 자동으로 정렬되는 키값으로 사용됩니다.요소의 set 값은 직접 변경되지 않을 수 있습니다.대신, 이전 값을 삭제하고 새 값의 요소를 삽입해야 합니다.  즉, set은 중복없이 저장하는 자료구조입니다.일종의 집합이라고 생각하시면 됩니다. set의 특징으로는 1. 숫자든 문자든 중복을 없엔다.2. 삽입하는 순서에 상관없이 정렬되서 입력이 된다. 이 특징을 모두 만족시킬 수 있는 자료구조는 이진트리 입니다. 즉, set은 벨런스 트리로 Red-Black 트리로 만들어져 있습니다. 이진트리 특성상 삽입과 삭제가 용이합니다.  set을 사용하려면 #inclu..

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_..