U E D R , A S I H C RSS

CppALL/0512

Difference between r1.3 and the current

@@ -37,14 +37,13 @@
* 0.5+c하면 오버로딩이 안됨.
* 전체 오버로딩-> C operator+(float l, complex r){return r+l;}
* friend : 내가 만든 것을 상대방에게 열어줌
* template : Generic Programming
* STL : Container, Algorithm, Iterator -> std::find(시작점,끝점,값) : 있으면 이터레이터로 위치, 없으면 끝점
* Algorithm -> 함수를 입력(함수포인터, Function Object(()연산자 오버로딩, <functional>을 include 해야됨.) 등)
* 함수를 즉석해서 인라인 한다 - 함수가 들어갈 자리가 definition & 익명
* 이것이 오늘 배울 '''Lamda Expression'''이다.
* '''이름이 없다!!!'''
* [],(),{} 으로 표시
* []<-캡쳐블록,(인자),expt_list->ret type{함수코드}
* []<-캡쳐블록,(인자),exepction list->ret type{함수코드}
* 인자와 함수코드는 함수 짜듯이 짜면 된다.
* 캡쳐블록 : 인자 외에 값을 넘겨줄 수 있음
{{{
@@ -63,6 +62,17 @@
[&,x] : x만 값으로 캡쳐
[=,&x] : x만 레퍼런스로 캡쳐
}}}
* prototype signature
{{{
[x](int c){return Foo(c,x);}
}}}
* type alias
* C에서는 typedef, C++에서는 using~~using namespace std; 아님~~
* using 새이름=헌이름;
* 함수 정의의 새로운 방법
* auto 이름(인자)예외처리->리턴타입
* template에서 기존 함수의 정의대로 하면 리턴 타입 정의가 애매
* unexpected_handler
----

== 잡담 ==



1. 개요

시간 : 오후 6시 ~ 8시
장소 : 6층 실습실

2. 참가원

멘토 장용운 출석
멘티 15이원준 출석
박인서 출석

3. 이번에 배울 것

  • lamda expression

4. 스터디 진행

  • auto : name이 길 때(Type 연역 가능)
    • 길어지는 이유
      • :: -> 클래스, 바깥 Scope, enum, struct, namespace에서 씀
      • <> -> 템플릿
    • 파라미터는 auto 안됨. range based for에서 주로 씀.
  • uniform 초기화
    • 초기화 시 = : 복사 생성자
    • 배열 : 값이 여러개
    • 초기화 방법을 {}로 통일
    • 배열을 동적할당 할 때도 이용 가능
  • initializer_list
    • 어떤 값이 올지 모르겠는 경우 그냥 initalizer_list로 하면 가변 인자의 값을 받을 수 있다.
  • Reference
    • 좋은 거지만 단점 : 참조하는 것이 실제 존재하는 변수 -> 다시 바꾸기 힘듬. 상수가 들어갈 수 없다.
    • 레퍼런스와 레퍼런스 아닌 것을 오버로딩하면 위에 있는거 실행(레퍼런스로 오버로딩 된 것을 위로 올리자.)
  • rvalue Reference
    • rvalue : 대입 연산자에서 오른쪽에만 오는 것(상수, 임시객체)
    • 표시 : & * 대표적 예 : move semantics->move constructor, move operator
      • move <-> copy
      • Car(Car &&)->shallow copy+원본 데이터 포인터 null
  • 연산자 오버로딩
    • 0.5+c하면 오버로딩이 안됨.
    • 전체 오버로딩-> C operator+(float l, complex r){return r+l;}
  • friend : 내가 만든 것을 상대방에게 열어줌
  • STL : Container, Algorithm, Iterator -> std::find(시작점,끝점,값) : 있으면 이터레이터로 위치, 없으면 끝점
    • Algorithm -> 함수를 입력(함수포인터, Function Object(()연산자 오버로딩, <functional>을 include 해야됨.) 등)
    • 함수를 즉석해서 인라인 한다 - 함수가 들어갈 자리가 definition & 익명
  • 이것이 오늘 배울 Lamda Expression이다.
    • 이름이 없다!!!
    • [],(),{} 으로 표시
    • []<-캡쳐블록,(인자),exepction list->ret type{함수코드}
    • 인자와 함수코드는 함수 짜듯이 짜면 된다.
    • 캡쳐블록 : 인자 외에 값을 넘겨줄 수 있음

ex. std::find_if(시작점,끝점,함수) 함수는 bool타입을 리턴해야됨
함수에 Lamda Expression을 넣는다고 가정
int compare;
[compare](int c)
{return c==compare;}
  • 캡쳐블록에 값이 없으면 사용 불가능
  • 그냥 캡쳐블록에 넣으면 값 변경 불가능
  • &를 붙이면 레퍼런스로 캡쳐 : 변경 가능

[&] : 밖에 있는 모든 변수를 레퍼런스로 캡쳐
[=] : 밖에 있는 모든 변수를 값으로 캡쳐
[&,x] : x만 값으로 캡쳐
[=,&x] : x만 레퍼런스로 캡쳐
  • prototype signature

[x](int c){return Foo(c,x);}
  • type alias
    • C에서는 typedef, C++에서는 usingusing namespace std; 아님
    • using 새이름=헌이름;
  • 함수 정의의 새로운 방법
    • auto 이름(인자)예외처리->리턴타입
    • template에서 기존 함수의 정의대로 하면 리턴 타입 정의가 애매
    • unexpected_handler


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:01
Processing time 0.0611 sec