본문으로 바로가기

나만의 연습장

현재위치 :: HOME BLOG CATEGORY SEARCH ARCHIVE TAGS MEDIA LOCATION GUESTBOOK

네비게이션

  • 홈
  • 태그
  • 방명록
관리자
  • 블로그 이미지
    엄준식사생팬

    엄준식이 좋아요.

    링크추가
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃

STL) 정렬과 관련된 함수들 ( sort, stable_sort, inplace_merge, partial_sort, nth_element, is_sorted )

STL의 sort(정렬)와 관련된 함수에 대해 작성합니다. std::sort 함수는 지정된 범위에 있는 요소를 내림차순 또는 오름차순 또는 주어진 이항 술어에 맞춰 정렬 합니다. 인자로는 시작과 끝의 인덱스, 생략된 술어를 받으며 반복자는 임의 접근 반복자여야 합니다. 12345678vector nvt = { 1,3,2,4,5,7,6,8,10,9 };std::sort(nvt.begin(), nvt.end()); // 1,2,3,4,5,6,7,8,9,10std::sort(nvt.begin(), nvt.end(), [](int& _t1, int& _t2) { return _t1 > _t2;}); // 10,9,8,7,6,5,4,3,2,1list nlist = { 1,3,2,4,5,7,6,8,10,9 };st..

C++/STL 2019. 2. 19. 02:31

STL) Heap 과 관련된 연산들

이번에 STL에 대한 공부를 하며 작성하기로 했다. 모든 STL에 대한 내용은 CppCon 2018: Jonathan Boccara “105 STL Algorithms in Less Than an Hour” 를 참조했다. ( 링크 : https://www.youtube.com/watch?v=2olsGf6JIkU&t=964s ) 오늘은 STL의 make_heap, sort_heap, push_heap 등 heap 관련 연산을 작성하겠다. 그전에 힙과, 힙정렬에 대해 간단히 알아두면 좋다. 링크 : https://ko.wikipedia.org/wiki/%ED%9E%99_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0) ( 힙에 대한 위키피디아의 정보 ) make_heap 은 [first..

C++/STL 2019. 2. 18. 14:31

STL) C++ 템플릿

이번엔 STL의 기초가 되는 템플릿에 대해 작성합니다.템플릿은 일반화 프로그래밍 (Generic Programming) 이라는 C++ 프로그래밍의 기준입니다.많은 데이터 타입에 대해 동일한 작업이 필요할 때, 주로 사용되며 타입과 알고리즘에 상관없이 항상 동일하게 작동합니다. 변수로도 템플릿을 작성할 순 있지만, 따로 작성하진 않겠습니다. 예를 들어 두 정수 값을 받아 max를 출력해주는 함수를 하나 만들겠습니다. 12345678int max(int lhs, int rhs) { return (lhs > rhs ? lhs : rhs);} int main() { int a = max(10, 20); // 20 int b = max(20, 30); // 30}Colored by Color Scriptercs ..

C++/STL 2019. 2. 18. 04:16

C++11) 스마트 포인터 ( auto_ptr, unique_ptr, shared_ptr, weak_ptr)

이번엔 auto_ptr 부터 weak_ptr 까지 모든 스마트 포인터들에 대해 작성합니다. auto_ptr은 TR1 부터 생성됐던 스마트 포인터의 시초입니다.사용자가 깜빡 할 수 있는 동적할당 된 객체의 파괴를 대신 해줄 객체를 만드는 것입니다.auto_ptr은 C++11 부터 사용 중지 권고, C++17 부터 제거 됐습니다. (현재 vs2017 내에선 살아있습니다;) 1234567891011 int* b = new int; b = 0; auto_ptrptr1(b); // b의 소유권은 ptr1에게 있습니다. auto_ptrptr2(new int); //RAII 처럼 이런 방식도 가능! auto_ptrptr3 = ptr1; // b의 소유권은 이제 ptr3 에게로, ptr1은 b에 대한 소유권을 가지지 ..

C++/Modern 2019. 2. 15. 04:16

C++11) std::reference_wrapper

C++11에 추가된 참조를 래핑하는 클래스 std::reference_wrapper 와 도우미 역할인 std::ref, std::cref에 대해 작성합니다. std::reference_wrapper는 다음과 같이 작성돼 있습니다.1234567891011121314151617template class reference_wrapper{public: typedef Ty type; reference_wrapper(Ty&) noexcept; operator Ty&() const noexcept; Ty& get() const noexcept; template auto operator()(Types&&... args) const -> decltype(std::invoke(get(), std::forward(args)..

C++/Modern 2019. 2. 14. 03:00

C++11) 사용자 정의 리터럴

리터럴의 5가지 주요 자료형은 정수, 문자, 부동 소수점, 문자열, 포인터 및 부울형 입니다.C++11 부터 이러한 범주에 따라 사용자 고유의 리터럴을 정의하여 일반적인 구문에 대한 바로가기를 정의하고 안전성을 높힐 수 있습니다. 예를 들어 Distance 라는 클래스가 있다고 합시다. 킬로미터와 마일에 대한 리터럴을 하나씩 정의하고 간단히auto = 42.0km 또는 auto = 42.0mi을 작성하여 사용자가 측정 단위를 명시할 수 있습니다.사용자 정의 리터럴에 대한 성능의 이점이나 단점은 없습니다.주로 편의상 또는 컴파일 시간 형식 추론을 위해 사용됩니다. 12345Distance d = 36.0_mi + 42.0_km; // 사용자 정의 리터럴 std::string str = "hello"s + ..

C++/Modern 2019. 2. 13. 03:40

C++11) extern template

extern template 은 C++11 에서 컴파일 기능 향상을 위해 등장했으며, 같은 템플릿 객체가 2번 이상 인스턴스화 되어컴파일 시간 및 오브젝트 크기가 증가하는 것을 막아줍니다. 1234567891011121314151617181920212223// header.h templatevoid ReallyBigFunction(){ // 뭔가 엄청 길고 큰 작업이 작성돼있음} // source1.cpp #include "header.h"void something1(){ ReallyBigFunction();} // source2.cpp #include "header.h"void something2(){ ReallyBigFunction();}cs 1234567source1.o void something1..

C++/Modern 2019. 2. 13. 01:59

C++11) std::tuple

std::tuple은 가변인자 타입으로써, std::pair의 일반형입니다.예전엔 2개 이상의 값을 반환 하려면 구조체를 이용해 입력해줬어야 하지만 이젠 std::tuple로 가능합니다. tuple을 사용하려면 기본적으로 헤더를 포함하셔야 합니다.123456789101112131415#include #include #include using namespace std;int main() { typedef std::tuple sc; std::tuple sc1 = std::make_tuple(3.8, 'A', "김덕배"); auto sc2 = std::make_tuple(3.4, 'B', "김아무개"); // 가장 일반적인 방법 sc sc3 = std::make_tuple(0.0, 'F', "박아무개"); /..

C++/Modern 2019. 2. 10. 18:00
  • 이전
  • 1
  • ···
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 다음

사이드바

NOTICE

  • 전체 보기
MORE+

CATEGORY

  • 분류 전체보기 (129)
    • 알고리즘 (13)
      • 정렬 (1)
      • 동적계획법 (9)
      • 완전탐색 (2)
    • C++ (63)
      • Modern (40)
      • Before (2)
      • STL (11)
      • 여담 (8)
      • WinApi (1)
    • Graphics (17)
      • 이론 (8)
      • DirectX (3)
      • Vulkan (6)
    • Computer Science (0)
    • UnrealEngine (32)
      • 기능 (13)
      • Impl (14)
      • Issue (1)
      • Editor (4)
    • Unity3D (4)
      • 기능 (4)

RECENTLY

  • 최근 글
  • 최근 댓글

최근 글

최근댓글

Trackback

TAG

  • 언리얼엔진4
  • Before
  • stl
  • 언리얼엔진5
  • Modern
  • unity3D
  • c++
  • 여담
  • c++20
  • UnrealEngine5
  • UnrealEditor
  • Firebase
  • UnrealEngineIssue
  • UnrealEngine
  • vulkan
MORE+

ARCHIVE

CALENDAR

«   2025/08   »
일 월 화 수 목 금 토
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

LINK

VISITOR

오늘
어제
전체
  • 홈으로
  • 방명록
  • 로그인
  • 로그아웃
  • 맨위로
SKIN BY COPYCATZ COPYRIGHT 나만의 연습장, ALL RIGHT RESERVED.
나만의 연습장
블로그 이미지 엄준식사생팬 님의 블로그
MENU
  • 홈
  • 태그
  • 방명록
CATEGORY
  • 분류 전체보기 (129)
    • 알고리즘 (13)
      • 정렬 (1)
      • 동적계획법 (9)
      • 완전탐색 (2)
    • C++ (63)
      • Modern (40)
      • Before (2)
      • STL (11)
      • 여담 (8)
      • WinApi (1)
    • Graphics (17)
      • 이론 (8)
      • DirectX (3)
      • Vulkan (6)
    • Computer Science (0)
    • UnrealEngine (32)
      • 기능 (13)
      • Impl (14)
      • Issue (1)
      • Editor (4)
    • Unity3D (4)
      • 기능 (4)
VISITOR 오늘 / 전체
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

티스토리툴바