std::next와 std::advance의 차이점 포스팅 썸네일 이미지

< Programming >/C++

std::next와 std::advance의 차이점

C++ 표준 라이브러리에는 반복자를 조작하는 유용한 함수들이 포함되어 있다. C++11 표준 라이브러리인 iterator 헤더 내의 두가지 함수에 대해 설명한다. std::next와 std::advance는 반복자를 전진시키는 기능을 제공하지만, 몇 가지 차이점이 있는데, 이에 대한 포스팅을 한다. 1. std::next 현재 반복자 위치에서 주어진 거리만큼 전진한 새로운 반복자를 반환한다. 기본적으로 'n'값이 1인 경우로 설정되어 있으며, 'n' 값을 변경하여 다른 거리로 전진시킬 수도 있다. 아래는 예제코드. std::vector myVector = {1, 2, 3, 4, 5}; auto it = myVector.begin(); auto nextIt = std::next(it, 3); // it을 ..

2023.06.08 게시됨

c++ Lambda 포스팅 썸네일 이미지

< Programming >/C++

c++ Lambda

C++ 람다(lambda)는 익명 함수를 생성하는 기능으로, 함수 객체를 간단하게 정의하고 사용할 수 있는 방법을 제공합니다. 람다는 주로 함수형 프로그래밍이나 콜백 함수 등에서 유용하게 사용됩니다. C++11부터 도입되었으며, 람다는 코드의 가독성과 편의성을 높여줍니다. 람다의 기본 구문은 다음과 같습니다: [capture](parameters) -> return_type { // 함수 내용 } capture: 람다 함수에서 외부 변수를 사용할 때 해당 변수를 캡처합니다. 캡처는 [] 안에 위치하며, 기본적으로 외부 변수에 접근할 수 없습니다. 필요한 변수를 캡처하려면 캡처 리스트에 변수를 명시해야 합니다. 예를 들어 x와 y를 캡처하려면 [x, y]와 같이 씁니다. 캡처에는 값 캡처([=]), 참조 ..

2023.05.23 게시됨

< Programming >/C++

constexpr ( generalized constant expressions )

기존 const 키워드와 비슷한데, 간혹 예제나 다른 프로젝트들을 보면 보이던 키워드이다. C++ 11에 추가되었으며, 기존 상수형 변수,함수 키워드 const 비슷하지만 다른점들을 비교해보았다. 'const' 와 'constexpr' 모두 상수를 나타내는 키워드(상수 구문)이지만, 둘 사이에는 중요한 차이점이 있다. 'constexpr' 는 무조건 컴파일 시간에 평가한다. 그와 달리 'const' 는 컴파일 시간에 평가할 수 도 있고, 런타임에 초기화 될 수 도 있다. constexpr int add(int x, int y) { return x + y; } constexpr int result = add(1, 2); // result는 컴파일 시간에 3으로 평가됩니다.

2023.05.04 게시됨

< Programming >/C++

C++ 17 에서 업데이트 된 기능 정리.

이 글은 17년에 표준화 된 C++ 17 의 새로운 기능에 대한 정리한 글 입니다. 1. Class Template argument Deduction ( 클래스 템플릿 인자 추론 ) 기존에는 함수 템플릿 인자 추론이 가능했는데, 이제는 클래스 생성자 타입을 통한 인자 추론이 추가적으로 가능하다. 인스턴스화 시 컴파일러가 자동으로 추론하는 기능이다. 사용하면서 얻게되는 이점으로는 간결한 코드작성과 더불어 코드 변경 시에도 인스턴스화 된 타입을 일일이 수정할 필요가 없으므로 코드 유지보수성이 향상된다는 점이 있다. 더불어 타입이름을 생략할 수 있으므로 코드의 가독성을 높이는데도 도움이 된다. #include #include // 기존 C++ 11 함수 템플릿 인자 추론 template void print(T..

2023.04.25 게시됨

< Programming >/C++

std::Funtion 정리

최근에 공부하면서 새로 알게 된 함수포인터 비슷한 기능을 정리해본다. 이것도 boost에서 넘어왔다는데, C++11 표준으로 추가됐다. 사용방법 은 아래와 같다. std::function SendPacketFunc; // 선언 // 람다형식으로 사용 auto sendPacketFunc = [&](UINT32 clientIndex_, UINT16 packetSize, BYTE* pSendPacket) { SendMsg(clientIndex_, packetSize, pSendPacket); }; 위의 코드에서 SendPacketFunc는 std::function 클래스 템플릿을 이용하여 선언된 변수로, 함수나 함수 객체를 저장할 수 있는 변수이다. 위와 같은 방식으로 SendPacketFunc 변수를 통해 ..

2023.04.06 게시됨