일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pandas
- 쉘
- FIND
- ubuntu
- ngui
- postgresql
- sql
- Shader
- Unity
- DROP
- sqlite
- mysql
- null
- python
- SVN
- expect
- dataframe
- if
- boost
- awk
- List
- Eclipse
- SSH
- conda
- 배열
- C++
- autovacuum
- pi
- with
- c++11
- Today
- Total
その先にあるもの…
[C++]C++ 람다 본문
[캡처] (매개변수 목록) mutable 예외목록 -> 반환형 { 함수 몸체 }
[캡처]
람다 함수 외부의 변수에 접근할 수 예약어
[] 외부 변수를 쓰지 않는다.
[=] 모든 외부 변수를 값으로 전달 받는다.
[&] 모든 외부 변수를 참조로 전달 받는다.
[this] 현재 객체를 참조한다.
int nOutValue = 1;
for (int i = 0; i < 10; ++i)
{
[]()
{
//에러 외부 변수 nOutValue에 접근하지 못한다.
std::cout << "Hello World ~ " << nOutValue++ << std::endl;
}();
}
for (int i = 0; i < 10; ++i)
{
[=] ()
{
//에러 외부 변수 nOutValue를 수정하지 못한다.
std::cout << "Hello World ~ " << nOutValue++ << std::endl;
}();
}
for (int i = 0; i < 10; ++i)
{
[&] ()
{
//1에서 10까지 출력된다.
std::cout << "Hello World ~ " << nOutValue++ << std::endl;
}();
}
int n1, n2, n3, n4, n5;
mutable
값으로 전달받아서 캡처하는 방식일 때 한정자 const를 무효화 시킨다.
for (int i = 0; i < 10; ++i)
{
[=] () mutable
{
//값에 의한 전달이라 Hello World ~ 1이 10번 출력된다.
std::cout << "Hello World ~ " << nOutValue++ << std::endl;
}();
}
예외처리
throw로 예외를 넘길 수 있다.
for (int i = 0; i < 10; ++i)
{
try {
[&]() mutable throw()
{
std::cout << "Hello World ~ " << nOutValue++ << std::endl;
throw 1;
}();
}
catch (int e) {
//error가 10번 찍힌다.
if (e == 1)
std::cout << "erro" << std::endl;
}
}
'프로그래밍' 카테고리의 다른 글
[SHELL SCRIPT] 쉘 스크립트 scp 예제 (0) | 2018.03.29 |
---|---|
[SHELL SCRIPT] 쉘 프로그램 (0) | 2018.03.14 |
[C++] default delete (0) | 2016.06.08 |
[C++]초기화 리스트 (0) | 2016.06.08 |
[C++]Range based for loop (0) | 2016.06.08 |