반응형

프로그래밍 62

C++ Lambda

Lambda 람다는 쉽게 말해서 "함수를 인자로 보낼때" lvalue로 "생성 되어있는 함수"를 보내는 것이 아닌 rvalue를 "즉석에서 만들어 보내는것" Lambda 사용법 -[캡쳐](매개변수){함수 내용} auto findIt3= std::find_if(v.begin(), v.end(), [&itemId](Item& item) { return item._itemId == itemId;}); Lambda.. 왜써? struct FindItem { FindItem(int itemId, Rarity rarity, ItemType type) : _itemId(itemId) { } bool operator()(Item& item) { return item._itemId == _itemId } int _ite..

프로그래밍/C++ 2022.11.10

전달 참조(보편 참조)와 forward

보편 참조 == 전달참조 보편 참조라는 이름이 c++17로 오면서 전달 참조라고 바뀜 전달 참조가 무엇이냐! 코드 부터 보겠음 template void Test_ForwardingRef(T&& param) { } &&가 두개.. 오른값을 인자로 받는 코드인가?? 오른값(rvalue)과 이동 대입 연산자 value는 두개로 나뉠 수 있는데 하나는 왼값( lvalue ) 또 하나는 오른값( rvalue ) int a = 5; 위 코드에서 a가 왼값이고 5가 오른값이라고 할 수 있음 즉 왼값은 - 단일식을 넘어서 계속 지속되는 개체를 flrjtwjrjt.tistory.com Knight k1; Test_ForwardingRef(k1); Test_ForwardingRef(std::move(k1)); 하지만 왼값..

프로그래밍/C++ 2022.11.09

오른값(rvalue)과 이동 대입 연산자

value는 두개로 나뉠 수 있는데 하나는 왼값( lvalue ) 또 하나는 오른값( rvalue ) int a = 5; 위 코드에서 a가 왼값이고 5가 오른값이라고 할 수 있음 즉 왼값은 - 단일식을 넘어서 계속 지속되는 개체를 뜻함 오른값 - 왼값이 아닌 나머지로 임시 값, 열거형, 람다, i++ 등이 오른 값에 해당함 void TestKnight_Copy(Knight knight) {} void TestKnight_LValueRef(Knight& knight) {} void TestKnight_ConstLValueRef(const Knight& knight) {} // &&를 넣으면 오른값을 넣을 수 있음 대신 왼값은 못넣음 void TestKnight_RValueRef(Knight&& knight..

프로그래밍/C++ 2022.11.09

using, typedef

using - 사용 typedef - 타입을 정의 typedef,와 using은 "별명 만들기 정도"로 생각하면 좋음 __int64의 별명을 IT64로 int의 별명을 IT로 -typedef 사용법 typedef 형식 이름 -using 사용법 using 이름 = 형식 typedef void (*Myfunc)(); // Myfunc는 함수포인터를 지칭하게 됨 using Myfunc2 = void(*)(); typedef __int64 IT64; // IT64는 __int64를 지칭하게 됨 using IT = int; template using List = std::list; // list를 vector로 바꾸는 등으로 활용 가능 template struct LIST { typedef std::list Li..

프로그래밍/C++ 2022.11.09

STL map

vector와 list에는 큰 단점이 하나 존재하는데 바로 "원하는 조건에 해당하는 데이터를 찾는 속도가 느리다!" 그렇다면 이런 상황에서는 뭘 사용해야할까? map - 균형 이진 트리로 데이터를 저장하는 자료구조 c++의 map은 python과 C#의 dictionary라고 생각하면 된다 map을 생성할때 key와 value를 넣고 나중에 key로 value를 꺼내는 형식임 // map m; map m; // 데이터 생성 m.emplace(1, 2); // key = 1, value = 2 m.emplace(5, 23); m.insert(make_pair(2, 100)); // key = 2, value = 100 : key값이 이미 사용중이면 작동 안함 // 데이터 출력 cout

프로그래밍/C++ 2022.11.06

STL deque 정리

deque - Double - ended queue // 데크 - 말 그대로 Double ended queue, "앞과 뒤에서 삽입, 삭제가 가능" deque를 쉽게 이해하기 위해선 deque를 "list와 vector의 짬뽕"이라고 생각하면된다. deque를 이해하기 위한 짤막한 vector, list 메모리 할당 설명 -vector 할당 받은 메모리를 다 사용하면 "1.5배 더 큰 메모리를 새로 할당"받고 데이터 이전 -list 아무 위치나 메모리를 할당받은 다음 "논리적으로 서로를 연결" deque 설명 deque는 16byte의 메모리를 할당받고 그 메모리를 "vector처럼 사용함" ( 임의 접근 가능 ) 이후 메모리를 다 사용하면 다른 위치에 16byte의 "메모리를 추가로 할당" 받는데 li..

프로그래밍/C++ 2022.11.04
반응형