320x100

프로그래밍 89

유틸리티 라이브러리

1. std::function 헤더에 정의된 타입.함수 포인터, 함수 객체, 람다 표현식등 호출이 가능한 것이라면 저장이 가능하다.템플릿으로 정의되어 있는데, 이에 대한 템플릿 파라미터는 함수 원형에 대한 정의를 받는다.std::functionR은 리턴 타입, ArgTypes는 쉼표로 분리된 함수의 인자 타입 목록 ex) std::function을 함수 포인터 변수로 사용하는 방법void func(int num, const string& str){cout

함수 객체

함수 호출 연산자를 클래스에서 오버로딩하면 함수 포인터 자리에 넣을 수 있는 객체. 1. 산술 함수 객체 plus : + minus : - multiplies : * divides : / modulus : % negate : ~ 2. 비교 함수 객체 equal_to : == not_equal_to : != greater : > less_equal : = 3. 논리 함수 객체 logical_not : ! logical_and : && logical_or : || 4. 비트 연산 함수 객체 bit_and : & bit_or : | bit_xor : ^ 5. 함수 객체 어댑터 함수 객체를 이용할 때, 인터페이스가 맞지 않는 경우 함수를 합성하거나 조합하여 필요한 함수형태를 만듦 5.1 바인더 함수의 특정 파라..

람다(lambda)

람다 표현식 : [캡쳐블록] (파라미터) mutable 익셉션목록 -> 리턴타입 { 함수바디 } 캡쳐블록 : 람다 함수 안에서 참조할 바깥 변수를 지정한다.[=] 모든 변수를 값으로서 복제하여 캡쳐한다.[&] 모든 변수를 참조로서(원본을 수정) 캡쳐한다. [&x] 변수 x만 참조로서 캡쳐한다.[x] 변수 x만 값으로서 캡쳐한다.[=, &x, &y] 모든 변수를 디폴트 값으로 캡쳐하되, x와 y는 참조로 캡쳐한다.[&, x] 모든 변수를 디폴트 참조로 캡쳐하되, x는 값으로 캡쳐한다.[&x, &x] 같은 변수를 반복해서 지정하는 것은 허용하지 않는다. 파라미터 : 표현식에서 넘겨받을 파라미터 목록을 정의한다.mutable : 캡쳐받는 변수를 수정할 수 있다.익셉션목록 : 바디 안에서 throw 할 수 있는..

STL 알고리즘

1. 유틸리티 알고리즘 min(), max() : 주어진 두 값 중에서 작은 값, 또는 큰 값을 리턴한다. C++11에서는 두 개 이상의 값을 함수 인자로 사용할 수 있다. minmax() : 주어진 2개 이상의 값 중 최소값과 최대값을 pair 타입 쌍으로 리턴한다. swap() : 주어진 두 변수의 값을 교환한다. 2. 불변 알고리즘항목의 나열을 대상으로 하여 항목의 어떤 정보를 리턴하거나 항목마다 특정 함수를 실행한다. ● 검색 알고리즘 - C++11 알고리즘 개요 정렬된 상태 복잡도 find() find_if() 주어진 값과 같거나 주어진 조건이 true가 되는 첫 번째 항목을 찾는다. 불필요 선형 find_if_not() 주어진 조건이 false가 되는 첫 번째 항목을 찾는다. 불필요 선형 fi..

STL 컨테이너

표준 라이브러리는 관련 개체 컬렉션을 저장할, 형식이 안전한 다양한 컨테이너를 제공합니다. 컨테이너는 클래스 템플릿입니다. 컨테이너 변수를 선언할 때 컨테이너에 포함할 요소의 형식을 지정합니다. 1. vector 항목의 나열을 저장하고 항목별로 랜덤 액세스가 가능하다. 배열과 다르게 인덱스 경계 검사를 자동으로 수행한다. 배열과 동일하게 연속된 메모리에 저장된다. 마지막 인덱스에 항목을 삽입/삭제 할 때 O(1)의 소요시간을 보장한다. 임의의 위치에 있는 데이터에 접근할 때 사용하기 좋다. 2. list 이중 연결 리스트 데이터 구조이다. vector나 array처럼 일련의 항목을 저장한다. 다만 데이터들이 연속된 메모리에 위치하지 않는다. (앞뒤로 연결된 데이터들의 위치만 기억) 항목을 찾는데는 느리지..

예외처리(exception)

MSDNTry, Throw 및 Catch 문(C++) : https://msdn.microsoft.com/ko-kr/library/6dekhbbc.aspx : https://msdn.microsoft.com/ko-kr/library/t65b74ad.aspx 예외 처리는 일반적인 실행의 흐름을 바꾸는 몇 가지 조건을 처리하도록 설계한 프로그래밍 언어의 개념이나 컴퓨터 하드웨어 구조를 말한다. 사용 키워드는 try, catch, throw를 사용한다.try : 예외 발생을 체크할 구문catch : 예외 발생시 처리할 구문throw : 예외 발생시키는 구문 #include // 익셉션 클래스가 정의되어 있는 헤더 MyData md;try{// Code that could throw an exception md..

포인터 인자 검증하기

/* IsWritableMemory : 주어진 메모리 주소의 상태가 쓰기가능인지 체크하는 함수 Param : LPVOID pMemoryAddr : 검사하고자 하는 메모리의 주소 Return Value : ERROR_SUCCESS : 인자로 주어진 주소의 메모리가 Read/Write 가능한 경우 기타 값 : Read/Write 가능한 메모리가 아니면 해당 주소의 Protect Mode 를 나타내는 0이 아닌 값을 리턴함. http://msdn.microsoft.com/en-us/library/aa915370.aspx 참조 */ INT IsWritableMemory(LPVOID pMemoryAddr) { MEMORY_BASIC_INFORMATION MemInfo = {0,}; size_t nResult = ..

320x100