iterator
-
std::transform()에 대한 간단한 고찰개발/C·C++ 2024. 9. 4. 22:21
C++ 문법에 대해 살펴보다가 재미있는 코드가 있어서 간단하게 고찰해보려고 한다.공식 문서에 구현 예제까지 나와있다.헤더는 templateconstexpr //templateconstexpr // 대략적인 흐름은 원본 데이터에 대한 시작 반복자, 끝 반복자로 범위를 지정해주고결과물을 저장할 자료구조(우리 예제에서는 vector)의 시작 반복자,그리고 데이터를 가공할 방법을 안내하는 콜백 함수를 넣어주는 형태다. 앞서 잠시 언급했듯이 vector를 사용해 볼 건데,transform()에 넣을 함수 포인터는 멤버 함수에 대한 함수 포인터다.멤버 함수 포인터를 만드는 방법은 일반 함수와 조금 다르다.멤버 함수를 호출할 때 보통 "인스턴스." 혹은 "포인터 변수->"의 방식으로멤버 함수를 호출하고 필요한 인수를..
-
std::remove_if, std::erase개발/C·C++ 2024. 8. 17. 20:18
이 둘을 이용해서 데이터를 지우는 로직은 보통 다음과 같다.auto it = std::remove_if(data_vector_.begin(), data_vector_.end(), [remove_node](const std::unique_ptr>& node) { return node.get() == remove_node; }); if (it != data_vector_.end()) { data_vector_.erase(it, data_vector_.end());} remove_if의 구현 방식은 대단히 간단한데 다음과 같다.(참고링크)templateForwardIt remove_if(ForwardIt first, ForwardIt last, UnaryPred p){ fir..