Vector초기화 질문 있습니다.
171
작성한 질문수 4
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
#include <iostream>
#include <vector>
#include <set>
#include <cstring>
#include <algorithm>
using namespace std;
template <typename T>
void debug(vector<vector<T>> a)
{
cout << "-----------------------\n";
for (int i = 0; i < a.size(); ++i)
{
for (int j = 0; j < a[i].size(); j++)
{
cout << a[i][j] << " ";
}
cout << "\n";
}
cout << "-----------------------\n";
}
set<int> data_H;
vector<vector<int>> vec;
int visited[101][101]; // 2차 배열
vector<vector<int>> visited; //vector로 동적할당
int M, val, cnt, ans;
int dr[4] = { 0 , -1 , 1 , 0 };
int dc[4] = { -1 , 0 , 0 , 1 };
int nr, nc;
void dfs(int r, int c, int val)
{
visited[r][c] = true;
for (int i = 0; i < 4; i++)
{
nr = r + dr[i];
nc = c + dc[i];
if (nr < 0 || nc < 0 || nr >= M || nc >= M)continue;
if (vec[nr][nc] <= val) continue;
if (visited[nr][nc]) continue;
dfs(nr, nc, val);
}
return;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> M;
vec.resize(M, vector<int>(M,0));
visited.resize(M, vector<int>(M,0)); //vector 사이즈입력에 맞춰 셋팅 및 초기화
int input;
for (int i = 0; i < M; ++i)
{
for (int j = 0; j < M; ++j)
{
cin >> input;
vec[i][j] = input;
data_H.insert(input);
}
}
//debug(vec);
//cout << sizeof(vec);
//cout << sizeof(visited);
for (auto c : data_H)
{
memset(&visited, false,sizeof(visited));
fill(visited.begin(), visited.end(), 0); //
//위 2가지 방식으로 하면 vector로 visited 선언할 때는 안되더라구요. 배열로 선언한 것은 되는데..
cnt = 0;
for (int i = 0; i < M; ++i)
{
for (int j = 0; j < M; ++j)
{
//cout << "debug i = " << i << " j = " << j << " c = " << c << "\n";
//cout << "debug vec[i][j] = " << vec[i][j] << " c = " << c << "\n";
if( (vec[i][j] > c) && (visited[i][j] != 1) )
{
dfs(i, j, c);
cnt++;
}
}
}
//cout << "-------cnt-----\n";
//cout << cnt << "\n";
//cout << "-------cnt-----\n";
ans = max(cnt, ans);
}
cout << ans;
}
결론적으로, 질문을 간단히 드리면, array로 선언할 때는 memset으로 중간 초기화 작업을 할 수 있는데,vector로 사용할 때는 resize로 size 맞추면 그 다음에 초기화는 어떻게 진행해야 되는 건가요..ㅠ.ㅠ
일일이 하나씩 해줘야 하는건가요?
답변 1
0
결론적으로, 질문을 간단히 드리면, array로 선언할 때는 memset으로 중간 초기화 작업을 할 수 있는데,vector로 사용할 때는 resize로 size 맞추면 그 다음에 초기화는 어떻게 진행해야 되는 건가요..ㅠ.ㅠ
>> 똑같이 memset이나 fill 사용할 수 있습니다. 해당 부분 교안 참고해주세요.
1-E질문입니다!
0
533
2
3-L 틀린 부분 피드백 부탁드립니다.
0
835
2
1-A문제 순열재귀함수 질문입니다.
0
396
1
1-A 일곱난쟁이문제입니다
0
469
1
문제 풀 때 방향성에 대해
0
809
1
맥에서 vs code로 실행 관련 질문입니다
0
530
1
17071번 메모리 초과
0
389
1
1-C질문입니다!
0
428
2
2-B BFS 시간초과질문
0
637
2
1-O 13번 라인
0
445
1
6-J 놀이공원 문제 질문
0
388
1
구현관련 질문
0
491
1
강의 교안
0
321
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
550
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
539
1
1-K
0
481
2
3-G번 질문있습니다.
1
480
3
3-C 실행 시간 질문드립니다.
0
502
1
4-A 문제 풀이 질문있습니다.
0
601
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
441
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
349
1
3-O go 함수 질문 드립니다.
1
452
2
4-A 출력 질문
0
307
1
1주차 1-O 질문드립니다
0
264
1





