일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터애셋
- 약참조
- UE4 커스텀로그
- 알고리즘
- 크리티컬섹션
- 언리얼엔진구조체
- 언리얼가비지컬렉터
- 프로그래머스
- UML관련
- 정렬
- map
- UE_LOG
- 델리게이트
- unorder_map
- 자료구조
- 선택정렬
- 강참조
- 스마트포인터
- 정렬알고리즘
- moreeffectiveC++
- BFS
- 람다
- C++최적화
- enumasByue
- stl
- 람다사용정렬
- 애셋로드
- UELOG
- C++
- dataasset
- Today
- Total
목록C & CPP (88)
기억을 위한 기록들
C++ 11부터 포함된 정규 표현식( regular expression )이라는 라이브러리가 존재합니다. 정규표현식이란 문자열에서 특정 패턴을 찾거나 혹은 매치시키기 위해 사용되는 문자열의 표현으로, 헤더 파일에 정의되어 있습니다. 이를 통해 문자열 처리를 보다 유연하게 할 수 있습니다. 하지만 일반 string에서도 find와 같은 문자열 탐색 등을 진행할 수 있는데, 정규표현식을 쓰는 이유로는 특정한 규칙을 가진 패턴을 갖고 있는 문자열을 탐색할 때 좋은 듯싶다. 예를 들어 문자열의 단순한 단어등을 검색할 때엔 string의 find가 좋겠지만( ex: "서울시 강남구", "경기도 수원시"에서 단순하게 앞에 3글자인 "서울시"를 탐색할 때 라든가), 이메일 주소같이 더 복잡해지면서 어떤 규칙이 존재할..
std::string: std::string은 가변 길이의 문자열을 나타내는 클래스 문자열 데이터를 동적으로 할당하고 관리합니다. 메모리는 자동으로 확장 및 축소됩니다. 문자열의 길이 정보를 내부에 저장하며, 문자열의 모든 연산 (추출, 수정, 추가 등)을 지원합니다. 문자열을 복사하거나 이동하는 등의 작업에 관련된 메모리 할당 및 해제가 수반됩니다. std::string_view: std::string_view는 문자열의 일부 또는 전체에 대한 읽기 전용(view)을 나타내는 클래스입니다. 메모리를 소유하지 않고, 기존의 문자열 데이터를 참조합니다. 따라서 복사나 메모리 할당이 없습니다. 문자열의 길이 정보를 내부에 저장하지 않고, 기존 문자열의 일부를 가리킵니다. 주로 문자열 조각에 대한 빠른 읽기 ..
코딩테스트들을 반복해서 해보다가 자주 사용해서 유용한 함수들을 모아봤다. 더 많이 있기도 하지만 최대한 '자주' 사용한것들을 모아봤고, 중간 중간 추가 해주는 글이다. - 각 함수들이 만능은 아니다. 사용 한다고 무조건 장점만 있는것도 아니다. - 더 나은 방법이 있을수도 있다. - std::reverse - 함수 주어진 배열을 뒤집어 준다. #include #include // std::reverse int main() { const int size = 5; int myArray[size] = {1, 2, 3, 4, 5}; // 배열 뒤집기 std::reverse(myArray, myArray + size); // 뒤집힌 배열 출력 std::cout
vector, list 등을 사용하다보면 각 데이터들에서 최소값 최대값을 구할때가 필요한데 유용한 std 함수가 있다. template ForwardIterator max_element (ForwardIterator first, ForwardIterator last); template ForwardIterator max_element (ForwardIterator first, ForwardIterator last, Compare comp); template ForwardIterator min_element (ForwardIterator first, ForwardIterator last); template ForwardIterator min_element (ForwardIterator first, Forw..
ex) S = 1010 N번째 비트 끄기 S &= ~(1
언리얼엔진을 사용하다 보면 델리게이트 및 이벤트를 자주 접하다가, 가끔 유용하게 사용 하는 람다 함수에 대해 메모리 할당이 궁금해서 ChatGPT 한테 물어봤다. Q. 람다함수 메모리 할당은 어떻게 돼? A. 람다 함수는 컴파일러에 의해 함수 객체(function object)로 변환됩니다. 이 함수 객체는 일반적으로 람다 함수를 호출할 때 스택에 할당되며, 람다 함수에서 캡처한 변수가 있다면, 해당 변수도 스택에 저장됩니다. 람다 함수가 호출될 때, 스택에 할당된 함수 객체와 캡처된 변수는 모두 소멸됩니다. 따라서, 람다 함수의 메모리 할당은 일반적으로 스택 기반으로 이루어지며, 람다 함수의 호출 또한 스택 기반으로 이루어집니다. 그러나, 람다 함수가 함수 객체로 변환될 때, 람다 함수의 구현 코드와 ..
https://google.github.io/styleguide/cppguide.html Google C++ Style Guide Google C++ Style Guide Background C++ is one of the main development languages used by many of Google's open-source projects. As every C++ programmer knows, the language has many powerful features, but this power brings with it complexity, which in turn ca google.github.io
초안: 2021-03-31 1차수정 : 2022-12-05 람다란??? 람다 표현식이란 함수나 함수 객체를 별도로 정의하지 않고, 필요한 지점에서 곧바로 함수를 직접 만들어 쓸 수 있는 일종의 익명 함수(이름 없는 함수라고도 할수 있을 것 같다? )혹은 클로저(Closure)를 말한다. 람다 표현식을 잘 활용하면 코드를 깔끔하게 만들 수 있다. 사실 람다 함수라는 단어 자체도 원래는 존재하지 않아야 한다고 한다. 우리가 평소에 사용하는 [](){}로 묶인 람다 함수라고 불리우는 것들은 정식적인 명칭으로는 람다 표현식(Lambda Expression)이라고 불러야 한다. 그로 인해서 탄생한 함수를 만드는 문법이기 때문에, 클로저를 만드는 문법 또는 기술이라고 봐야한다. 하지만, 람다 함수라고 하면 일맥상통..
https://www.cplusplus.com/reference/sstream/stringstream/stringstream/ stringstream::stringstream - C++ Reference initialization (2)explicit stringstream (const string& str, ios_base::openmode which = ios_base::in | ios_base::out); www.cplusplus.com #include #include using namespace std; int main() { string str = "Hello World"; stringstream strStream(str); string to, From; strStream >> to >> Fro..
const는 상수화 시켜주는 키워드로 const int var = 5; //OK! const int var2; //error! var = 7 //error! 선언한 값을 바꾸지 못하며 초기화가 안되었다면 에러를 뿜어낸다. 하지만 이는 모두 런타임에서 확인하고 있으며, 컴파일 시간에서 확인할수 있게 추가된 constexpr이 C++11부터 지원되었다. constexpr int var = 5; //OK! constexpr int var2; //error! var = 7 //error! 사용하는 측면에서 변수 앞에 붙이는데는 큰 차이는 체감하지 못한다. 함수에서 사용할때의 차이가 좀 있는데 1. 가상으로 오버라이딩된 함수가 아니여야한다. 2 반환 값은 반드시 LiteralType이여햔다. 3. 함수에 붙을경우..
어떤클래스의 함수 호출 연산자를 오버로딩해서 그 클래스의 객체를 함수 포인터처럼 사용하게 만들 수 있다. 이렇게 사용하는 객체를 함수 객체 또는 간단히 펑터라 부른다. 표준 라이브러리 알고리즘 (STL 알고리즘) 중에 find_if()와 accumulate()를 비롯한 여러 알고리즘은 함수 포인터, 람다 표현식, 펑터 등을 비롯한 호출 가능한 객체를 인수로 받아서 여러 알고리즘의 동작을 변경할 수 있다. C++는 이를 위해 여러가지 펑터 클래스를 헤더파일에 정의 해두었다. 이런것들은 주로 콜백 연산에 자주 사용된다. 펑터의 개념은 간단하지만 작성과정은 상당히 번거롭다. 함수나 펑터 클래스를 생성해서 다른 것과 중복되지 않게 이름을 정한 다음, 그 이름을 사용하도록 작성해야한다. 이럴 때는 람다표현식을 이..
헤더 파일에 정의된 std::function 템플릿을 이용하면 1. 함수를 가리키는 타입(함수 포인터) 2. 함수 객체 3. 람다 표현식 세개를 비롯하여 호출 가능한 모든 대상을 가리키는 타입을 생성할 수 있다. std::function은 다형성 함수 래퍼(polymorphic function wrapper)라고도 불리며, 함수 포인터로도 사용할 수도 있고, 콜백을 구현하는 함수를 나타내는 매개변수와 사용할 수도 있다. std::function R은 리턴타입이고, ArgTypes는 각각을 콤마로 구분한 매개변수의 타입 목록이다. 예제 1) 함수포인터 형식 void func(int num, const string& str) { cout