lyzqm   4년 전

vector<vector<int>> adj;

인접리스트를 만들기 위해 다음과 같은 vector를 전역변수로 선언하였습니다.

1. adj = vector<vector<int>>(MAX_N, vector<int>());

2. adj.resize(MAX_N);


두 표현은 같은 표현 아닌가요? 이 문제에서 1로 하면 틀리고 2로하면 맞게 나오네요..

1. https://www.acmicpc.net/source...

2. https://www.acmicpc.net/source...

50번째 줄만 다릅니다. 

제가 잘못알고 있었던 건지.. ㅠㅠ 알려주세요

yukariko   4년 전

1은 새롭게 초기화된 벡터를 adj에 대입하는 코드이고

2는 기존의 adj 벡터의 크기를 늘리는 코드입니다.

차이점은 2에서는 adj 벡터의 초기화가 이루어지지 않는것입니다. 즉, size가 줄어들지 않는 한 adj 벡터 안의 내용이 유지됩니다.

lyzqm   4년 전

아 감사합니다.

잘못알고있는 부분이 있긴했군요

근데 이 문제에 대해서 많은 분들이 테스트 케이스마다 resize로 벡터를 확장을 시켰는데

초기화를 시켜야 되는거 아닌가요? 으.. 가치관에 혼란이 오네요

yukariko   4년 전

아마 그 분들은 adj가 전역에 있지않고 테스트케이스 반복문안에 선언되어있거나

resize 전에 clear를 수행해주지 않았나 생각해봅니다.

lyzqm   4년 전

class로 선언해서 소멸될때 clear되네요.

답변 감사합니다. 아직 의문점인게 있지만 해결해볼게요

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