1. auto (with 포인터와 참조자)
정수형 auto (참조자)
#include<iostream>
using namespace std;
int main(void) {
auto src_int = 23;
auto&& dst_int = src_int;
dst_int = 100;
cout << src_int << endl;
}
char형 auto
#include<iostream>
using namespace std;
int main(void) {
const char str[] = "abcd";
auto arr1 = str; //arr1은 const char* 타입
auto& arr2 = str; //arr2은 const char(&)[5] 타입
/*arr2[3] = '2';
arr3[1] = 'z';*/
for (auto s : str) {
cout << s;
}
cout << endl;
for (auto ptr = arr1; *ptr != 0;ptr++) {
cout << *ptr;
}
cout << endl;
for (auto s : arr2) {
cout << s;
}
}
2. 축약형 산술 연산 (참조자 리턴 허용)
함수에서 리턴 자료형에 참조자 사용 시 댕글링 포인터 버그가 생긴다. 그러나 이를 허용한 경우가 다음과 같은 축약형 산술 연산이다.
#include<iostream>
using namespace std;
struct Matrix
{
int t;
Matrix& operator+=(const Matrix& rhs)
{
t += 3;
return *this; // 자기(Matrix 구조체)를 반환
}
};
int main(void) {
Matrix a;
a.t = 2;
Matrix b = a.operator+=(a);
}
3. 고정 소수점과 부동소수점
https://velog.io/@syleemk/CS-%EB%B6%80%EB%8F%99-%EC%86%8C%EC%88%98%EC%A0%90-%EC%98%A4%EC%B0%A8
[CS] 부동 소수점 오차
알고리즘 문제를 풀면서 실수 연산을 하다보면, 예상한 것과 결과가 다르게 나오는 경우가 종종 있다.이러한 원인은 컴퓨터가 실수를 표현하는 방식에 있다. 컴퓨터가 실수를 표현하는 방식을
velog.io
4. 오브젝트 풀링 기법
동적할당 남용 시 OS가 가용 메모리를 찾아내는 오버헤드가 쌓임에 따라 성능에 악영향 줄 수 있다.
이를 완화하기 위해 오브젝트 풀링 기법이 있다. 힙 메모리 해제가 필요한 상황에서 해제 하지 않고 동일한 객체 타입이 필요한 상황에서 이 메모리를 활용해 별도의 풀을 만들어 해당 객체를 관리한다. 이러한 최적화 기법이 오브젝트 풀링 기법이다.
https://gameprogrammingpatterns.com/object-pool.html
5. 값과 참조 [댕글링 포인터형태 구조 더 알아보자]
return 타입에서 댕글링포인터는 참조형(?) 반환형 함수에서 해당 함수 내 지역변수를 반환 시 자주 발생. 단, struct 구조체에서 참조형 연산자 함수에 자기자신 반환 시(*this) 해당 구조체를 반환하여 유용하게 쓰일 수있음.
https://blog.naver.com/PostView.naver?blogId=freeface06&logNo=221215132299&parentCategoryNo=&categoryNo=64&viewDate=&isShowPopularPosts=true&from=search
6. 배정연산자
배정연산은 할당 표현인 '=' 을 의미.
배정연산 왼쪽에 오는 값을 왼값, 오지 못하는 값을 오른값(정확한 표현은 아님)
변수들은 왼값, 값으로 리턴되는 함수의 반환값은 오른값.
모든 정수(문자 포함) , 실수 리터럴값은 모두 오른값.
임시객체들은 모두 오른값이다.
7. 이동생성, 이동대입연산자는 복사에 대한 오버헤드 줄임 (이동 sementic)
클래스내 이동생성, 이동대입연산자를 활용해보자
결과적으로 힙영역에 메모리를 새로 할당 받을 때 줄이는 최적화 기법이다.
'프로그래머스 > 코딩테스트' 카테고리의 다른 글
| 4주차 과제(cpp) (0) | 2023.01.09 |
|---|---|
| 3주차 과제 (k번째 수, 회전하는 큐) (1) | 2023.01.01 |