본문 바로가기
728x90

분류 전체보기102

[Algorithm] STL Set과 MultiSet Set과 MultiSet은 자신의 요소를 특정 정렬 기준에 따라 정렬한다. Set과 MultiSet의 큰 차이는 Set은 요소의 중복을 허용하지 않고 MultiSet은 중복을 허용한다는 것이다. Set과 MultiSet을 사용하기 위해서는 을 인클루드 해야한다. 또한 namespace std에 존재한다. 셋과 멀티셋은 정렬 기준에 부합하는 자료형만 넣을 수 있다. 두 번째 템플릿 파라미터에 정렬 기준을 넣을 수 있다. 기본으로는 less이다. less는 연산자 = param2 이 밖에도 많이 있다. 정렬.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 순방향 리스트 (Forward list) 순방향 리스트 C++11에서 도입된 컨테이너로 자신의 요소를 단방향 연결리스트로 관리한다. 사진 출처 : http://hyeonstorage.tistory.com/259 순방향 연결리스트를 사용하기 위해서는 를 인클루드 해야한다. namespace std 안에 정의되어 있다. 기능 순방향 리스트는 개념적으로 되돌아가지 못하는 리스트와 같다. 따라서 리스트가 제공하지 않는 기능은 제공되지 않는다. 리스트보다 좋은 점은 메모리를 덜 사용하고 실행 시간이 조금 더 빠르다 되돌아가지 못하기 때문에 리스트에는 없는 제약 조건이 몇 가지 있다. 1. 양방향이 아닌 순방향 반복자를 제공한다. 따라서 역방향 연산은 제공되지 않는다. 2. size() 함수를 제공하지 않는다. 공간이나 시간 부하를 만드는 특성을 생략했기.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 리스트(List) 리스트 리스트는 요소들을 양방향 연결리스트의 형태로 관리한다. 리스트를 사용하기 위해서는 를 인클루드 해야한다. 리스트는 namespace std에 정의되어 있다. 리스트 객체는 앵커(anchor)라 불리는 포인터 2개를 제공한다. 이 두 개의 포인터는 첫 번째와 마지막 요소를 가리킨다. 새로운 요소를 삽입하기 위해서는 이 포인터를 조작해야한다. 이로인해 벡터, 데크, 배열과는 다른 특성이 나타난다. 1. 리스트는 임의 접근을 제공하지 않는다. n번째 요소에 접근하기 위해서는 링크를 타고 가야 한다. 양방향 리스트로 되어있기 때문에 뒤에서도 타고 갈 수 있다. 2. 각 위치에서 요소를 삽입하고 제거하는 연산은 빠르다. 다른 요소의 이동이 필요 없기 때문이다. 포인터만 몇개 고치면 바로 삽입/삭제가 가능하.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 데크(Deque) 데크 ( deque ) 데크는 벡터와 유사하다. 동적 배열에 요소를 관리하며 임의 접근을 허용한다. 또한 벡터의 거의 동일한 인터페이스를 제공한다. 데크와 벡터의 차이는 테크는 동적 배열의 양 끝이 모두 열려있다. 즉, 앞 뒤 모두 삽입/삭제가 가능하다. 데크를 사용하기 위해서는 를 인클루드 해야한다. 또한 namespace std에 정의되어 있다. 데크의 기능 1. 요소의 삽입/삭제는 동적 배열의 시작과 끝 부분 모두 빠르다. 2. 내부 구조는 요소에 접근할 때 하나 이상의 간접 방식을 취하기 때문에 대체로 요소 접근이나 반복자 이동이 약간 더 느리다. 3. 반복자는 특수한 자료형의 스마트포인터여야 한다. 4. 메모리 블록에 대한 크기 제한이 있는 시스템의 경우 데크가 벡터보다 더 많은 요소를 가질 수.. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 벡터(Vector) 벡터 벡터는 동적배열을 만드는 연산을 수행한다. 벡터를 사용하기 위해서는 를 포함해야 한다. 또한 vector는 namespace std에 존재한다. 벡터의 요소는 어떤 자료형이라도 올 수 있다. 두 번째 템플릿 매개변수로 메모리 모델을 정의할 수 있는데 기본 메모리 모델은 allocator 모델이다. 기능 벡터는 자신의 요소를 내부의 동적 배열로 복사한다. 벡터는 임의 접근을 제공한다. 즉, 위치를 안다면 상수 시간 내에 접근할 수 있다. 동적배열이기 때문에 중간에 데이터를 삽입/삭제 하는 경우 성능이 떨어진다. 벡터는 현재 요소를 저장하기 위한 메모리보다 많은 메모리를 할당한다. 현재 메모리보다 더 많은 요소가 삽입되면 벡터는 재배치를 수행한다. 벡터의 용량은 매우 중요한데 그 이유는 2가지가 있다... [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] STL 배열(Array) STL이 지원하는 컨테이너 클래스인 array은 정적 배열을 나타낸다. 일반적인 C 배열을 클래스화 시켜 STL 컨테이너의 인터페이스를 제공한다. 배열은 크기가 같은 요소들이 연속적으로 모여 있는 것이기 때문에 크기를 변경할 수 없다. 요소의 값을 바꾸는 작업만 가능하다. 배열을 사용하기 위해서는 헤더파일을 인클루드 해야한다. #include namespace std에 정의 되어 있기 때문에 사용하려면 std::array로 사용한다. using namespace std를 사용하면 안그래도 된다. array는 템플릿 클래스이므로 어떠한 데이터형도 가질 수 있다. 두 번째 매개변수는 앞으로 가질 요소의 개수를 나타낸다. 배열의 기능 배열은 자신의 요소를 내부 정적 C 배열에 복사한다. 요소들은 항상 특정한 .. [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Algorithm] 기본적인 알고리즘 분석 방법 빅 O 표기법( Big O notation ) 어떤 알고리즘이 처리할 자료집합의 크기가 커짐에 따라 알고리즘의 효율이 어떻게 변화하는지를 대략적으로 추정하는 함수 O( 함수 ) 의 형태로 표기한다. 점근적 상한을 나타낸다. 복잡도 낮은 것에서 높은 순으로 나열하면 상수 < log₂ N < N [프로그래밍 공부]/Algorithm 2022. 1. 15.
[Unreal] C++로 LevelBlueprint 만들기 LevelBlueprint를 C++로 만들기 위해서는 LevelScriptActor를 상속받아 클래스를 만들어야 한다. 해당 클래스를 상속받아 클래스를 만들면 아무 기능도 없는 클래스가 생성된다. ( 생성자 조차 없음 ) 이를 사용하기 위해 생성자와 기본적인 BeginPlay, Tick 함수를 추가해준다. 이제 언리얼로 돌아와 레벨 블루프린트를 열고 클래스 세팅을 누른다. 클래스 세팅 - 클래스 옵션 - 부모 클래스 선택에서 기본적으로 LevelScriptActor 가 선택되어 있는데 이를 내가 만든 LevelScriptActor 로 변경해준다. 이렇게 하면 내가 만든 클래스를 레벨블루프린트로 사용이 가능하다. [Unreal4]/기능 2022. 1. 15.
728x90