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 게시됨

Behavior Tree 포스팅 썸네일 이미지

< Programming >/DesignPattern

Behavior Tree

트리구조로 되어있고, 게임개발 혹은 인공지능 시스템에서 사용되는 디자인 패턴 중 하나이다. 게임 서버내에 npc의 경우 위에 해당되는 경우라서, FSM 혹은 Behavior Tree 방식이 주로 활용된다. 일전에 봤던 코드는 FSM(유한 상태 머신) 에 가까운 코드였는데, 이번에 접하게 된 코드는 Behavior Tree 를 이용해 AI 가 구성되어 있었고, 새로 공부하면서 글을 작성한다. 아래는 간단한 예제. #include #include // 동작 트리 노드 클래스 class BTNode { public: virtual ~BTNode() {} // 동작 실행 메서드 virtual bool run() = 0; }; // 동작 트리 내부 노드 클래스 class BTComposite : public BT..

2023.05.23 게시됨

테이블 View 포스팅 썸네일 이미지

< Programming >/RDBMS

테이블 View

MySql Workbench 설치하니까 기본으로 sakila 라는 DVD 대여점의 데이터베이스가 예제로 제공되었다. 보니까 View 가 있던데, Table 을 기반으로 한 개념이다. 뷰는 실제 데이터가 저장되어 있는 테이블의 일부 데이터를 가지고 있는 가상 테이블이다. 특정 테이블의 특정 열만을 선택해서 보여주거나, 두 개 이상의 테이블에서 테이터를 조합해 보여줄 수 있다. 뷰는 이미 존재하는 테이블을 기반으로 만드는거니까, 해당 뷰만의 인덱스를 가질 수 없다. 그리고 당연히 기반 테이블 업데이트 시 뷰도 같이 업데이트 된다. 아래는 뷰 생성방법이다. CREATE VIEW [뷰 이름] AS SELECT [컬럼1], [컬럼2], ... FROM [테이블1] WHERE [조건]; 아래는 Mysql 에서 제공..

2023.05.09 게시됨

< 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 게시됨