1. pair

#include<cstdio>
#include<vector>
using namespace std;

typedef pair<int, int> Pair;

class test
{
public:
	test() {};
	int a;
	int b;
	void setInt(int a, int b)
	{
		this->a = a;
		this->b = b;
		
	}
	 Pair getInt()
	{
		 return Pair(a, b);
	}
};
int main(void)
{
	vector<Pair>vect;
	test t;
	t.setInt(3, 5);
	vect.push_back(t.getInt()); // test().getInt 가 pair형이다. 이를 push할려면 그럼 vector의 자료형도 pair형이어야함.
	printf("%d %d", vect[0].first, vect[0].second);
}

 

2. vector 자료형으로 class pointer 사용해보기

#include<cstdio>
#include<vector>
using namespace std;
class test
{
public:
	int a;
	int b;
	int c;
	test() {};
	test(int a, int b, int c)
	{
		this->a = a;
		this->b = b;
		this->c = c;
	}
	void setVal(int a, int b, int c)
	{
		this->a = a;
		this->b = b;
		this->c = c;
	}
	const int get_sum()
	{
		return a + b + c;
	}
};

int main(void)
{
	/*1. vector 자료형이 클래스*/
	test t(1,1,1);
	vector<test>vect;
	vect.push_back(t);

	/*2. vector자료형이 클래스형 포인터*/
	test* tt;
	tt = &t;
	vector<test*>vect2;
	tt->setVal(1, 2, 3); // tt가 가리키는 클래스 t 내부의 값들을 setVal을 통해 변경/.
	vect2.push_back(tt); // tt클래스를 push. 

	vect.push_back(*tt); // *tt 는 tt가 가리키는 주소의 값 즉 클래스 t의 값들을 vect에 push.
	//vect 자료형은 클래스 포인터가 아닌, 클래스이다. 포인터 클래스 자료형인
	//tt가 가리키는 값의 자료형이 클래스포인터가 아닌, 클래스이다. 그래서 vect에 push가능하다.

	printf("%d %d", vect2[0]->get_sum(),vect[1].get_sum());
}

'C_C++' 카테고리의 다른 글

노트북 -노트 만들기  (0) 2022.07.02
포인터 활용1(메인함수 내에서 간접참조사용)  (0) 2022.06.30
입력키 안보이게 하여 출력.  (0) 2022.04.13
벡터와 리스트 차이  (0) 2022.04.10
메모리 누수 체크  (0) 2022.03.27

+ Recent posts