chogdak   1년 전

하다가 도저히 답이 안나와서 질문 드립니다.

1번 질문.

사용자로부터 입력 받은 값을 n이라고 했을 때, 일반적으로 배열을 동적으로 생성하려면 int형이라고 했을때

int* num=new int(n); 이렇게 하면 생성이되는데

vector는 어떻게 해야될지 전혀 모르겠네요.

제가 원하는 것은 vector<pair<int,int> > 를 n개 만큼 생성하는 건데

vector<pair<int,int> >* num=new vector<pair<int, int> >(n); 이런식으로하면 컴파일 문제는 없는데

런타임에서 값을 넣을 때 에러가 나더군요... vector도 배열처럼 동적으로 편하게 생성할 수 있는 줄 알았는데 아닌가봐요..

해결책을 알려주시면 정말 감사하겠습니다.


2번 질문.

struct내에서 vector를 쓰고 싶은데

struct A{

vector<int> b;

};

이런식으로 구조체 정의 후

A* a=(A*)malloc(sizeof(A)*n); 으로 n개의 A구조체를 만들고,

A[i]에 있는 vector에 값을 넣을 때 또 런타임 에러가 생기네요....


1번도 그렇고 2번도 그렇고, vector가 저의 발목을 잡는데 어떻게 해야될지 도저히 모르겠습니다.


wowoto9772   1년 전

2차원 벡터를 동적으로 생성하기 위해서는 다음과 같이 해야합니다.

vector < vector <type> > dat;

dat.resize(cnt);

noeffserv   1년 전

resize 아니면

vector<pair<int,int> > num(n); 이렇게 해도 됩니다.

noeffserv   1년 전

2번에서 안되는 이유는 저도 자세힌 모르겠는데 malloc 대신에

vector <A> a(n);

이렇게 해도 기능적인면에선 비슷하게 사용할수 있을것 같네요.

chogdak   1년 전

감사합니다. 많은 도움이 되었습니다.

baekjoon   1년 전

vector가 동적 배열이라서 굳이 pointer를 사용할 필요는 없다고 생각합니다.

댓글을 작성하려면 로그인해야 합니다.