ProgrammingLang/c++ 34

[C++개발자되기]26. L-value, R-value, &, && 와 std::move의 관계

>>[C++ 관련 모든 글 보기] 개요 L-value, R-value, &, && 관계와 R-value와 std::move에는 어떤 관계가 있는지 알아본다. 개념 설명 1. L-value와 R-Value 란? - 자료형 선언 시 "=" 기준으로 왼쪽에 있는 것과 오른쪽에 있는 것을 가리킬 때 사용하는 명칭이다. - 아래 그림에서 파란색 영역에 있는 것은 L-Value라고 칭하고 빨간색 영역에 있는 것을 R-Value라고 칭한다. 2. & 와 && 란? - &은 reference라고 불리며, L-Value에 대한 새로운 별칭을 만들어 줄 때 사용된다. - &&은 R-Value reference라고 불리며, R-Value에 대한 새로운 별칭을 만들어 줄 때 사용된다. R-Value와 std::move의 관계..

ProgrammingLang/c++ 2021.12.05

[C++개발자되기]24. std::function

>>[C++ 관련 모든 글 보기] 개요 std::function의 기능을 알아 본다. 지원 시기 C++11 Header #include 정의 C++에서 callable 할 수 있는 것을 객체로 만드는 class * callable 이란? c++에서 호출 가능한 것들을 말한다. 1. 함수 2. lambda 3. operator() 정의 #include std::function func 사용법 #include void print(int a, int b); std::function fp = print; 사용 시기 1. 함수를 인자로 전달 하고 싶을떄 2. vector에 function을 넣고 싶을때 3. Thread를 pool로 만들어서 관리 하고 싶을때

ProgrammingLang/c++ 2021.12.05

[C++개발자되기]23. 문자열 다루기

문자열 대문자로 변경 #include #include std::string str = "Hello World"; std::transform(str.begin(), str.end(),str.begin(), ::toupper); 문자열 parsing #include std::string s = "ITEM=this is value"; std::string value = s.substr(s.find("=") + 1); argv to vector string #include #include int main(int argc, const char** argv) { std::vector arguments(argv + 1, argv + argc); } 문자열 비교 #include int main(int argc, con..

ProgrammingLang/c++ 2021.10.07

[매크로] macro 사용시 유용한 것

# 의 의미 매크로에서 # 연산자는 문자열로 치환 시켜주는 연산자 입니다. 아래 코드에서 TEST\n은 define에서 "TEST\n" 으로 치환이 됩니다. 1) 기본 #include #define PRINT(s) printf(#s) int main() { PRINT(TEST\n); } >TEST 2) 응용 가변 인자를 사용하여 macro를 다양하게 만들기 define 선언 부분에서 가변인자는 ... 으로 표시 되며 정의 부분에서는 ##__VAR_ARGS__ 와 mapping이 됩니다. 가변 인자 참고 사이트 - https://jhnyang.tistory.com/298 #include #define PRINT(s, ...) printf(#s, ##__VA_ARGS__) int main() { PRINT(..

ProgrammingLang/c++ 2021.07.03

[C++ 개발자되기] 18. std::vector 기본 사용법

1. Vector 란? - 동적으로 확장/축소가 가능한 동적 배열(dynamic array)로 구현되어 있습니다. 2. Vector 메모리 구현 방식 - 일반적인 배열처럼 개체들을 연속적인 메모리 공간에 저장 합니다. 3. Vector 접근 방식 - iterator 를 통한 접근이 가능 합니다. - position index(operator [])로도 접근이 가능 합니다. 4. Vector Heder #include 5. Vector method 1) 생성자 method std::vector v1; empty vector 생성 std::vector v2(4, 100); size 4에 초기값 100으로 vector 생성 std::vector v3(v2.begin(), v2.end()); iterator를 ..

ProgrammingLang/c++ 2020.03.27

[C++ 개발자되기] 17. std::cout 출력 포맷 변경 iomanip

>>[C++ 관련 모든 글 보기] 1. std::cout 출력 포맷 변경 방법 c++ 에서는 iomanip에서 제공하는 함수를 사용하여 포맷을 변경 할 수 있습니니다. iomanip는 Input Output Manipmanipulation이라르 뜻 입니다. 2. 필요 헤더 #include 3. 사용법 - std::cout 에 포맷을 먼저 세팅 합니다. 그 후 표현할 정보를 입력 합니다. - 다음 코드에서 std::hex 로 표현 할 포맷을 세팅 합니다. std::cout

ProgrammingLang/c++ 2020.03.18

[C++ 개발자되기] 16. smart pointer

개요 c++에서의 smart-pointer가 무엇인지 살펴본다. Smart pointer란? - 포인터처럼 동작하는 클래스 템플릿으로, 사용이 끝난 메모리를 자동으로 해제해 줍니다. 사용 방식 생성 - smart_pointer에 자료 형을 동적 할당 소멸 - 클래스 이기때문에 사용이 끝나면 소멸자가 알아서 메모리 해제하고 사라짐 Ex) - smart_pointer sp = new int(5); Smart pointer 좋은점 개발하다 보면 메모리 할당 후 까먹는 경우가 매우 많다 그러나 smart pointer를 사용하면 이런 걱정을 안해도된다. , 다만 해제된 smart pointer 사용하는 헤프닝이 발생할 수는 있다. Smart pointer 종류 및 핵심 개념 1. unique_ptr - uniq..

ProgrammingLang/c++ 2020.02.24