구조체라 불리는 struct는 C++에서 제공하는 자료구조가 아닌 개발자의 커스텀한 자료구조를 의미 합니다.
커스텀하게 정렬 을 추가하가ㅗ 싶거나 문제에서 여러개의 변수 예를 들어 a,b,c,d,e가 들어간 자료구조가 필요하다면 struct를 사용해야 합니다.
#include <bits/stdc++.h>
using namespace std;
struct Ralo{
int a,b;
double c,d,e;
};
void print (Ralo ralo){
cout<<ralo.a<<" "<< ralo.b<<" "<< ralo.c << " " << ralo.d << " "<<ralo.e<<"\n";
}
int main(){
Ralo ralo = {1,1,1,1,1};
print(ralo);
vector<Ralo> ret;
ret.push_back({1,2,3,4,5});
ret.push_back({1,2,3,4,6});
ret.push_back({});
ret.push_back({1,3});
for(Ralo ralo : ret){
print(ralo);
}
return 0;
}
다음코드를 보면 Ralo라는 int타입의 2개의 멤버변수, double 타입의 3개의 멤버 변수를 가진 간단한 구조체를 형성 vector에도 집어넣은 모습 또 값을 집어넣지 않는 경우 0으로 초기화되는 것을 볼 수 있다.
struct Point{
int x,y; //구조체의 멤버변수 y,x를 정의
Point(int y, int x) : y(y),x(x){}//y,x를 받아 멤버변수를 생성한다는 의미
Point(){y=-1,x=-1;}//y,x가 정해지지 않은 경우 기본값으로 -1,-1를 설정한다는 의미
bool operator <(const Point & a) const{
if(x==a.x) return y<a.y;
return x<a.x;
} //
};
{1,2},{2,3}이 만난는 경우 x는 서로 같지 않기 때문에 바로 밑의 return 문으로 내려가게 되고 x를 비교해서 {1,2}가 더 작기 때문에 {1,2},{2,3}을 비교했을 때 {1,2}가 더 작다는 결론을 내리게 된다.