본문으로 바로가기

나만의 연습장

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

네비게이션

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

    엄준식이 좋아요.

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

C++11) std::thread 와 관련된 함수, 라이브러리 1

사실 전시간의 explicit.... 를 끝으로 C++11 의 내용을 끝내려 했는데 아직 멀티스레드에 대한 글을 작성하지 않아서 하나 더 추가해 작성합니다. 이번 글에선 std::thread 그리고 그와 관련된 함수 ( std::mutex, atomic, etc... ) 에 대해 작성합니다. std::thread 는 라이브러리에 포함돼있습니다. 함수 객체, 함수 포인터, 람다식 과 id 를 제공하면 자동으로 thread 를 제작해주며 join 함수로 blocking 할 수 있습니다. class func1 { public: func1(int _id, int _length) : m_nid(_id), m_nlength(_length) {} void operator()() { for (int i = 0; i <..

C++/Modern 2019. 2. 7. 03:22

C++11) explicit, delete, default, override

c++11에서 추가된 explicit, delete, default, override 에 대해 작성합니다.explicit 는 암시적인 형변환을 막아주는 키워드 입니다.delete는 특정한 함수에 대해 정의를 금지하는 키워드 입니다.default는 사용자 정의 타입이 기본적으로 만들어주는 생성자 함수를 명시적으로 만들것을 요구하는 키워드 입니다.override는 사용자 정의 타입의 자식 클래스에게 함수를 오버라이딩 하라고 요구하는 키워드 입니다. explicit는 암시적인 형변환을 막아주는 키워드 입니다.예를 들어 Widget 이라는 사용자 정의 타입을 만들고 정수를 하나 받아 생성하게 만들었습니다.그리고 print 라는 함수를 하나 정의해 Widget 의 값들을 출력하는 함수를 만들었습니다. 123456..

C++/Modern 2019. 2. 6. 04:05

C++11) constexpr 키워드와 강한 열거형

constexpr 키워드는 상수 식을 뜻하며, c++11에서 추가됐고 c++14에서 향상됐습니다.const 처럼 값을 변경하려고 할 시 컴파일러가 오류를 발생합니다. const 와는 달리, constexpr는 함수 및 클래스에서도 사용이 가능합니다.constexpr 는 template 의 인수 또는 배열의 사이즈를 정의할때 마다 사용이 가능합니다. 강한 열거형 (strongly - typed enum class) 는 기존의 열거형에서 스코프 연산자만을 사용해서 타입에 접근 가능한 열거형입니다. constexpr는 c++11 에서 추가된 키워드로서 컴파일 타임에 상수의 초깃값을 알 수있게 해주는 키워드 입니다.일단 const 부터 확인하겠습니다. 1234567891011121314#include using..

C++/Modern 2019. 2. 5. 03:39

C++11) decltype (형식 지정자)

이번엔 c+11 에서 생긴 decltype에 대해 소개합니다.decltype전에 auto를 모르시는분은 auto를 보고 오시는게 좋을 것 같습니다. decltype 은 C++11 에서 추가된 키워드로서 auto가 값에 맞는 타입을 추론해준다면, decltype은 값에 맞는 타입을 추출해낸다고 보시면 될 것 같습니다. 1234567891011121314151617181920 class c{public: float a;};int main() { int x = 0; const int&& fx(); decltype(x); //int decltype((x)); //int& decltype(fx()); //const int&& c cc; decltype(cc.a); //float const c ccc; declty..

C++/Modern 2019. 2. 3. 22:41

C++11) 람다식 (Lambda Expression) 과 std::function

c++ 11부터 함수 객체를 조금 더 짧게 작성하자는 취지로 람다식이 등장했습니다.람다식과 std::function에 대해 작성합니다.만약 함수 객체 ( 단항 술어, 이항 술어 등 ) 을 모르신다면 STL 부분을 공부하시고 람다식을 공부하시는게 맞을 것 같습니다. 일반적으로 remove_if 함수와 erase 함수를 사용해 vector 내의 모든 원소 중 짝수인 값만 삭제하고 싶다면, 이렇게 작성하실겁니다. 12345678910111213141516#include #include #include using namespace std; class comp {public: bool operator()(int x) { return ((x % 2) == 0); }};int main() { vector a = { ..

C++/Modern 2019. 2. 2. 04:11

C++11) std::forward (perfect forwarding)

std::move 이후, std::forward 와 완벽 전달 (perfect forwarding) 에 대해 작성합니다 우리가 수 많은 class를 만들었다고 합시다. 그런데 그 class가 너무 많아 차라리 팩토리 함수를 하나 만들어서 생성해주면 편할 것 같군요 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include using namespace std; class A { A(int& _a) { } }; class B { B(const int& _b) { } }; template T* Factory(U& arg) { return new T(arg); } int main() { int i = 1; A* aa = Factory(i); //ok, Factor..

C++/Modern 2019. 2. 2. 02:17

c++11) std::move (move semantics)

lvalue 는 left-value 로, rvalue 는 right-value로 대부분 풀어쓰고 있다. 그래서 = (대입 연산자) 에서 왼쪽에 올 수 있는 값은 lvalue , 오른쪽에 올 수 있는 값은 lvalue 또는 rvalue 라고 정의하고 있다. 하지만 C++11 에서 std::move 와 std::forward 의 도입으로 이제는 다른 식으로 표현해야 할 필요성이 있음. 간단하게 표현하기 위해서, lvalue는 주소값을 읽어올 수 있는 객체 또는 이름이 있는 객체로, rvalue는 이름이 없거나 주소값을 읽어올 수 없는 객체 라고 보면 된다. 1. int x = 3 에서 x 는 상수 3을 가지고 새로운 주소를 할당해 만들었으므로 (이름이 있으므로) lvalue 하지만 3은 주소가 있던놈이 아니..

C++/Modern 2019. 2. 1. 05:10

C++11) auto 키워드

auto 키워드는 C++ 11에서 처음 등장했으며, 변수의 자료형을 컴파일 시간에 자동으로 추론해줍니다.decltype 키워드와 같이 자주 쓰입니다. 기본 문법auto temp; (잘못 작성했습니다. auto f = { 1 } 은 c++14 까진 std::initializer_list, c++17 부턴 int 입니다.) auto를 사용함으로써, 긴 변수의 이름도 쉽게 작성할 수 있게 되었습니다.예를 들어 이렇게 길고 복잡한 타입명을 a.begin의 리턴형에 맞춰 자동으로 추론해줍니다. 이런 경우는 어떨까요? template 함수 내에서 두 수를 곱하는 함수를 만들어 줬습니다.그런데 int 형과 double 형을 곱하고 있군요, 이런 어쩌죠 abc에서는 T 값을 반환하니... int 형이 반환될텐데요 ?이..

C++/Modern 2019. 1. 30. 05:18
  • 이전
  • 1
  • ···
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 다음

사이드바

NOTICE

  • 전체 보기
MORE+

CATEGORY

  • 분류 전체보기 (128)
    • 알고리즘 (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 (31)
      • 기능 (13)
      • Impl (13)
      • Issue (1)
      • Editor (4)
      • Private-Impl (0)
    • Unity3D (4)
      • 기능 (4)

RECENTLY

  • 최근 글
  • 최근 댓글

최근 글

최근댓글

Trackback

TAG

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

ARCHIVE

CALENDAR

«   2025/06   »
일 월 화 수 목 금 토
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

LINK

VISITOR

오늘
어제
전체
  • 홈으로
  • 방명록
  • 로그인
  • 로그아웃
  • 맨위로
SKIN BY COPYCATZ COPYRIGHT 나만의 연습장, ALL RIGHT RESERVED.
나만의 연습장
블로그 이미지 엄준식사생팬 님의 블로그
MENU
  • 홈
  • 태그
  • 방명록
CATEGORY
  • 분류 전체보기 (128)
    • 알고리즘 (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 (31)
      • 기능 (13)
      • Impl (13)
      • Issue (1)
      • Editor (4)
      • Private-Impl (0)
    • Unity3D (4)
      • 기능 (4)
VISITOR 오늘 / 전체
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

티스토리툴바