Struct

상인·2023년 1월 25일
0

Struct

구조체라 불리는 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으로 초기화되는 것을 볼 수 있다.

point 구조체 정의

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}가 더 작다는 결론을 내리게 된다.

profile
상상그이상인

0개의 댓글