알고리즘 코딩테스트 코드들을 접하다보면 작성자들이 다르다보니 long long을 ll로 표현하는 방법에 있어서 두가지 차이점을 접하게 되었다.
-첫번째로 #define ll long long 형태로 ll을 사용하게 하는 방법이 있다.
이 방법에서 유의해야 할 부분은 #define ll long long; 형태로 작성하지 않도록 해야한다는 것이다.
맨 마지막에 ;을 써놓고 뭐가 문제길래 인텔리센스 기능이 제대로 작동하지 않는지에 대해서 몰라서 한참을 찾았던적이 있따.
-두번째로 typedef long long ll; 이렇게 작성하는 방법이 있는데, 지금까지는 #define 형태의 전처리지시문이 익숙해서 typedef에 대해서 많이 접해보지 못해서 내가 사용하여야 할때는 사용하지 못했지만, 이번에 접한 코드에서 이러한 형태로 제시를 해주어서 차이점에 대해서 검색해보았다.
이와 같은 내용이 #define ll long long 과 typedef long long ll;의 차이점에 대한 내용이고, 이 내용을 보았을때는,
#define X first
#define Y second
형태의 사용이 아닌이상, ll을 long long을 대신하여서 사용할때는
typedef long long ll; 을 사용하는 것이 좋을것 같다는 생각이 든다.
이에 익숙해지도록 노력해보자.
그리고 전처리지시문 #define을 사용할때에는,
#define ll long long 형태로, 내가 쓰고싶은 별칭을 먼저, 그리고 타입을 나중에 작성하고, ; 을 제외하는데
typedef 을 사용할때에는
typedef long long ll; 형태로, 원래의 타입을 먼저 long long이라고 작성해주고, 그리고 별칭인 ll을 써주고, 그리고 나서 맨 마지막에 ; 을 빼먹지 말아야 한다는게 #define을 사용할때와는 거의 모두 반대인 느낌으로 작성해야한다.
이와 같은 내용을 이해하고 혹시나 typedef를 사용할때 헷갈리지 않게 주의하고,
#define을 사용할때에는 맨 마지막에 ; 를 쓰지 않기 위해 주의하도록 하자.
+++++++++++++++++++++++++
추가적으로 오늘 또 접한 형태로,
using ll=long long; 형태가 있다.
=================
질문해보니 다양한 방법이 있었다.
일단 내가 접한 것들만 고려해보면,
typedef long long ll;
#define ll long long
using ll=long long;
형태의 3가지다.
이중에서 나는 typedef long long ll;
형태를 쓰려고 하고있다. 일단 이거 하나에라도 먼저 익숙해지도록 하자.
'알고리즘 > BOJ' 카테고리의 다른 글
c++ cin을 이용해서 공백없이 쭉 이어서 주어진 행렬형태 입력받기. (0) | 2023.04.18 |
---|---|
c++ 11 이상에서 사용 가능한 range based 'for' loop에 관하여. (0) | 2023.04.18 |
c++에서 전처리지시문 #define과 typedef를 활용해서 long long을 ll로 표현할때의 차이점에 관하여. //추가적으로 using ll = long long; (0) | 2023.04.17 |
while (!dq.empty() && dq.back().second >= num) 형태의 코드의 이해. (0) | 2023.04.16 |
c++ size() 함수가 반환하는 값은 unsigned int임에 주의해야한다. (0) | 2023.04.16 |