2011년 이후의 c++(ISO C++11이후 버전)
C++11
int f()
{
return 2;
}
int main()
{
auto fptr =f;
std::cout<<
f()
<<std::endl;
}
uniform initalization { }
initalizer list : 초기화식
void function(std::initializer_list<int> args)
{
//초기화리스트 기능생기면서 이런 기능도 생김
//이 기능이 생기면서 유니폼 초기화식도 생성되게됨
}
int main()
{
function({1,2});
}
[캡처절](매개변수)->반환타입
{
//함수 본체 정의
}
int f()
{
return 2;
}
//위와 같은 기능을 하는 람다식
int main()
{
//auto fptr =f;
auto fptr = []()->int{return 2;};
//->int 생략가능(추론가능하기때문)
std::cout<<
f()
<<std::endl;
}
//캡처절 : 현재 블록에 존재하는 변수들을 람다 함수가 캡처해가는 것
[ ] : 캡처없음(외부변수 사용 불가능)
[&] : reference(참조로가져옴 : 참조로 가져옴)
[=] : value(값을가져옴 : 값으로 가져옴)
enum TrafficLight
{
RED,
YELLOW,
GREEN,
};
enum PixelColor
{
RED, //안됨
GREEN, //식별자가 전역이라서 불가능함
BLUE,
};
enum classPixelColor
//클래스면 가능함
{
RED,
GREEN,
BLUE,
};
int main()
{
TrafficLight color;
color = RED;
color = TrafficLight::RED;
Pixel p1;
p1=Pixel::Red;
}
std::unique_ptr<int> p {std::make_unique<int>()};
get() : a pointer to the managed object (시스템에 의해 관리되는 메모리에 포인터를 돌려줌)
//get() : 옛날 방식의 포인터와 호환
int *ptr = p.get();
release()
reset()
std::unique_ptr<> : 고유한1:1(포인터와 리소스와의 관계가 1대 1) -> 나를 참조하는 포인터가 사라지면 리소스가 없어짐
std::shared_ptr<> : 공유한1:n(여러 포인터가 하나의 리소스를 공유) -> 나를 참조하는 포인터가 하나도 없을 때 지워짐(인스턴스가 여러개-같은몬스터 여러개)
std::weak_ptr<> : 약한(소유권이 없음 , 참조 카운트에 영향을 주지 않는 공유 포인터-파티원) -> 대부분 일반 포인터로 대체함
auto s2 = std::make_tuple(1, 2.0f, "abc", true);
auto p3 = std::make_pair(1, "hello");
std::regex
1.문자열 검색과 관련된 기능
2.반복 노가다 대신해드리는 사무업무 부담을 줄여줌
3.문자열 치환
abcd@gmail.com
abcdef.co.kr
helloworld@abc
abc.co.kr@gmail.com
abcd@gmail.com
abcdef.co.kr
helloworld@abc
abc.co.kr@gmail.com
맞는 이메일 검사하기
[^@\t\r\n]+@[^@\t\r\n]
쓰레드(std::thread)