본문 바로가기

Language/C++23

Sort 함수의 커스터마이징, 특정 조건 정렬 알고리즘 문제를 풀다보면 Algorithm 헤더에 포함된 Sort 함수를 자주 이용합니다. 기본적으로 디폴트 함수를 이용해 오름차순 정렬을 이용합니다. #include #include using namespace std; void main(){ int arr[10] = { 2,8,4,6,7,5,1,3,10,9 }; sort(arr, arr + 10); for (int i = 0; i < 10; i++) { cout 2021. 10. 4.
PS에 필요한 String 컨테이너 기본 지식 String 컨테이너는 C++ 표준 라이브러리이지만 STL에 포함시키진 않는다. 문자만을 원소로 저장하기 때문에 유사 컨테이너라 불린다. 코딩테스트를 포함한 여러 PS 문제에서는 문자열 조작이 다양하게 출시되기 때문에 String 컨테이너와 생성자, 멤버함수를 암기하면 편리하다. # 생성자 string str; string str("Hello"); string str("Hello",2); //해당 문자열에서 'He'만 기록 string str(5,'H'); string str(str2.begin(), str2.end()); // 반복자 2개 이용 # 멤버함수 str.front(); // 맨 앞 문자리턴 str.back(); // 맨 뒤 문자리턴 str.substr(i,j); //i부터 j까지 자른 str.. 2021. 9. 9.
C++의 캐스팅 연산자 캐스트 연산자는 변수의 타입을 강제로 변환하는데 사용된다. 강제로 변환하는만큼 부작용이 있고 호환되지 않는 타입을 무리하게 캐스팅하는 경우 허가되지 않는 영역에 관여하게 되며 프로그램이 다운되는 경우도 종종 발생된다. C++은 기본 연산자외에 '기능을 축소하고 엄격한 규칙을 적용한' 4가지 캐스팅 연산자를 추가로 제공한다. 각각의 캐스팅 연산자는 캐스팅하는 영역에 차이점을 두어 알맞게 사용할 경우 안정성을 제공한다. (reinterpret제외) 연산자명 형식 기능 static_cast static_cast(d) 변환가능한 타입만 변환 dynamic_cast dynamic_cast(Parent) RTTI 참조, 부모-자식 안전한 변환허용 const_cast const_cast(p) 포인터의 상수성 변경 r.. 2021. 3. 25.
템플릿 함수 사용시 유의사항 함수 템플릿은 다양한 타입에 대해 대응할 수 있게 해준다. 매크로를 이용한 방법도 있지만 매크로 함수는 아주 간단한 동작에만 쓸 수 있어 활용에 한계가 있다. 템플릿의 선언은 다음과 같은 형식이다. template T function(T a,T b) { ... } 템플릿을 사용시 주의할 점은 함수 템플릿은 함수의 형식을 기억하는 틀일 뿐 그 자체로 작동하는 함수가 아니라는 점이다. 함수가 호출 되는 시점에 컴파일러로부터 호출 인수의 타입에 맞는 함수가 만들어진다. 이러한 과정을 인스턴스화라고 한다. 호출 되기전까지 템플릿 자체는 메모리를 소모하지 않는다. 다만 호출되는 함수가 많아질수록 다양한 버전의 함수가 생성된다는 점에 유의해야한다. 호출된 타입에 대해 인스턴스화 시키거나 함수를 삭제하는 것은 전적으.. 2021. 3. 2.