분류 전체보기 21

C++ STL - Associate Container; map, set

연관 컨테이너(associate container) 연관 컨테이너 컨테이너의 종류 중 하나로 키와 값을 쌍으로 저장한다. 원소들의 위치를 정할 수 없다. 다음과 같은 종류가 있다. 맵(map) 셋(set) 맵(map) 맵은 키와 값으로 데이터를 관리한다. 삽입시 정렬이 되기 때문에 검색 속도가 매우 빠르다. 키는 유일하므로 하나의 키에 하나의 값만 가질 수 있다. (단, 멀티맵(multimap)은 은 키 중복이 가능하다.) 코드 #include #include int main(){ std::map mp; mp.insert({"철수", 20});// 원소 추가 mp.insert({"영희", 30}); mp["바둑이"] = 100;// 이렇게도 가능 mp.erase("철수");// 키를 이용해 데이터 삭제 ..

CS/자료구조 2022.08.24

[프로그래머스 Lv.2/ C++] 빛의 경로 사이클

문제 - 빛의 경로 사이클 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ■ 문제 설명 각 칸마다 S, L, 또는 R가 써져 있는 격자가 있습니다. 당신은 이 격자에서 빛을 쏘고자 합니다. 이 격자의 각 칸에는 다음과 같은 특이한 성질이 있습니다. 빛이 "S"가 써진 칸에 도달한 경우, 직진합니다. 빛이 "L"이 써진 칸에 도달한 경우, 좌회전을 합니다. 빛이 "R"이 써진 칸에 도달한 경우, 우회전을 합니다. 빛이 격자의 끝을 넘어갈 경우, 반대쪽 끝으로 다시 돌아옵니다. 예를 들어, 빛이 1행에서 행이 줄어드는 방향으로 이동할 경우, 같은 열의 반대쪽..

[UE4] SetTimer() 사용시 주의할 점?

SetTimer함수를 이용해서 n초 뒤에 불이 켜지게 만들고 싶었다. 근데 자꾸 TArray에 접근할 때마다 언리얼이 터져나가서 내 멘탈도 같이 터질거 같았다. 처음엔 TArray쪽 문제인지도 몰랐다. 이곳 저곳 엄한데 고쳐보다가 여러 값들을 출력해보니까 분명 SetTimer 호출 전에 정상적으로 나오던 값이 SetTimer로 딜레이된 코드부분이 작동하면서 값이 정상적으로 안 나왔다. 내 예상에 SetTimer로 딜레이 되는 코드부분은 SetTimer를 호출하는 함수와 작동하기 때문에 SetTimer를 호출한 후 지역변수의 값도 잃기 때문이 아닌가... 싶다. 우리가 필요한 변수를 전역변수 또는 클래스 멤버변수로 저장해 사용하면 해결될 거 같지만, 나의 경우엔 64개의 담을 그릇이 필요해지기 때문에 다른..

공부/문제해결 2022.08.16

Visual Studio 디버깅이 느려지는 현상

평소에 잘만 쓰던 비주얼스튜디오가 갑자기 디버깅(F5)할 때 엄청 느려지는 현상을 겪었다. 처음에 언리얼을 사용하다가 생긴 문제였는데, 파일을 열고 첫 디버깅때만 느리고 그 뒤로는 이전처럼 빠르길래 그냥 언리얼이 파일이 커서 처음에 느린가보다 하고 한동한 방치하다가 언리얼이 아닌 다른 프로젝트에서도 동일한 현상이 나와서 좀 찾아봤다. 해결법 생각보다 간단했다. '디버그 > 옵션 창 > 디버깅 > 기호'에 있는 기호들을 모두 체크해제 했더니 원래 속도로 돌아왔다. 네트워크 속도가 빠르면 문제 없다는 사람도 있고, 다른 문제였던 사람도 있었는데 일단 나는 이걸로 해결했다.

공부/문제해결 2022.08.13

C++ STL - Sequence Container; vector, deque, list, forward_list

시퀀스 컨테이너(sequence container) 시퀀스 컨테이너 컨테이너의 종류 중 하나로 원소를 선형으로 저장한다는 특징이 있다. 수정하지 않는 한 원소들의 순서는 삽인된대로 유지된다. 다음과 같은 종류가 있다. 벡터(vector) 덱(deque) 리스트(list) 순방향 리스트(forward_list) 벡터(vector) 벡터는 동적배열로 구현된 클래스 템플릿이다. 원소들을 연속적인 메모리 공간에 저장하기 때문에 반복자 뿐만아니라 배열처럼 임의접근이 가능하다. (vec[i]) 코드 #include #include int main(){ std::vector vec = {1, 2, 3};// 선언과 동시에 초기화 std::vector::iterator it; vec.push_back(4);// 뒤에 ..

CS/자료구조 2022.08.12

C++ STL이란?

STL : Standard Tamplate Library C++에서 제공하는 표준 템플릿 라이브러리로 다음과 같이 구성되어있다. 컨테이너(Container) 반복자(Iterator) 알고리즘(Algorithm) 컨테이너(Container) 임의의 원소를 담는 객체로 자료구조라고도 한다. 컨테이너는 형태에 따라 다시 다음과 같이 나뉜다. 시퀀스 컨테이너(sequence container) 연관 컨테이너(associate container) 컨테이너 어댑터(container adapter) 반복자(Iterator) 컨테이너 안을 돌면서 특정 위치의 원소를 가리킨다. 알고리즘(Algorithm) 삭제, 검색, 정렬 등을 통해 컨테이너 내 원소를 다룬다. 제공되는 자료구조 Stack Queue Vector Li..

CS/자료구조 2022.08.12

멀티스레드 (Multi Thread)

스레드란? 스레드란 프로세스 내의 실행 흐름으로 프로세스보다 작은 단위다. 프로세스에서 제공하는 Protection Domain은 없다. 스레드가 나오게 된 배경 하나의 프로세스에는 하나의 Control만이 존재하기 때문에, 한 번에 하나의 일만 처리할 수 있다. 프로세스에서 할 작업을 여러 개로 쪼갠 뒤 각각을 스레드화하면 작업을 병렬적으로 처리할 수 있다. Cooperative Process와의 비교 Cooperative Process는 IPC가 필요하기 때문에 비용이 많이 든다. 프로세스 내에서 Cooperate하는 스레드를 만든다면 보다 적은 비용으로 Cooperative Process가 하는 일을 동일하게 수행 가능하다. 프로세스와 스레드 프로세스간프로세스 간 메모리 영역은 독립적이므로 서로의 ..

CS/기타 2022.08.06

C2259:추상클래스를 인스턴스화 할 수 없습니다

C2259:추상클래스를 인스턴스화 할 수 없습니다 가끔 가상함수를 사용하다보면 이런 오류를 접할 때가 있다. 원인1 가상함수를 선언만 하고 자식 클래스에서 정의하지 않는 경우이다. 모든 자식 클래스에서 해당 가상함수를 정의해주면 된다. // A.h class A{ A(); virtual void Func() = 0; } // A.cpp A::A(){ //... } // B.h class B : public A { B(); void Func(); } // B.cpp B::B(){ //... } void B::Func(){ //... } 자식 클래스에서 정의해주면 된다. 원인2 내가 겪은 문제... vector에 가상함수가 포함된 클래스를 넣고자 할 때 발생할 수 있다. [...] #include #incl..

공부/문제해결 2022.05.25