#pragma pack(push,n) => 구조체 크기는 가장 큰 바이트 수 배수로 따라간다. int,char 두 변수가 있으면 5가아닌 8로 되서 메모리가 더 쓰여진다. push n을 사용하면 n바이트 수 배수로 따라가서 n=1로 두면 8이아닌 5로 이용 가능하다.
std::fuction => C 에서의 함수 포인터는 진짜 함수들만 보관할 수 있는 객체라고 볼 수 있다면 이 std::function 의 경우 함수 뿐만이 아니라 모든 Callable 들을 보관할 수 있는 객체이다.
ex)
int some_func1(const std::string& a) {
std::cout << "Func1 호출! " << a << std::endl;
return 0;
}
struct S {
void operator()(char c) { std::cout << "Func2 호출! " << c << std::endl; }
};
int main() {
std::function<int(const std::string&)> f1 = some_func1;
std::function<void(char)> f2 = S();
std::function<void()> f3 = []() { std::cout << "Func3 호출! " << std::endl; };
f1("hello");
f2('c');
f3();
}
'C++' 카테고리의 다른 글
[C++] STL컨테이너 assign함수 (0) | 2024.10.19 |
---|---|
[C++] 벡터 선언 [],() 차이 (0) | 2024.10.19 |
[C++] 범위지정자 (::) (0) | 2024.10.19 |
[C++] 포인터 연산자 (*, &) (0) | 2024.10.19 |
문자열 특정문자 기준으로 자르기 (0) | 2024.07.13 |