2 차원 std :: vector 초기화
그래서 다음이 있습니다.
std::vector< std::vector <int> > fog;
그리고 나는 그것을 매우 순진하게 초기화하고 있습니다.
for(int i=0; i<A_NUMBER; i++)
{
std::vector <int> fogRow;
for(int j=0; j<OTHER_NUMBER; j++)
{
fogRow.push_back( 0 );
}
fog.push_back(fogRow);
}
그리고 그것은 매우 잘못된 것 같습니다 ... 이와 같은 벡터를 초기화하는 다른 방법이 있습니까?
std::vector::vector(count, value)
초기 크기와 기본값을 허용하는 생성자를 사용하십시오 .
std::vector<std::vector<int> > fog(
A_NUMBER,
std::vector<int>(OTHER_NUMBER)); // Defaults to zero initial value
4
예를 들어 0이 아닌 다른 값 이 기본값이되어야하는 경우 :
std::vector<std::vector<int> > fog(
A_NUMBER,
std::vector<int>(OTHER_NUMBER, 4));
또한 다음을 vector
사용하여, 및 기타 컨테이너 의 초기화를 허용하는 C ++ 11에 균일 한 초기화가 도입되었음을 언급해야합니다 {}
.
std::vector<std::vector<int> > fog { { 1, 1, 1 },
{ 2, 2, 2 } };
아무없는 append
방법에는 std::vector
, 그러나 당신이 포함하는 벡터 만들고 싶어 A_NUMBER
의 벡터를 int
포함하는 각각의 other_number
0을, 당신은이 작업을 수행 할 수 있습니다
std::vector<std::vector<int>> fog(A_NUMBER, std::vector<int>(OTHER_NUMBER));
2D 벡터 m * n을 초기화하고 초기 값을 0으로 설정한다고 가정 해 보겠습니다.
우리는 이것을 할 수있다
#include<iostream>
int main(){
int m = 2, n = 5;
vector<vector<int>> vec(m, vector<int> (n, 0));
return 0;
}
이미 설명 된 일반 구문은 다음과 같습니다.
std::vector<std::vector<int> > v (A_NUMBER, std::vector <int> (OTHER_NUMBER, DEFAULT_VALUE))
여기서 벡터 'v'는 'A_NUMBER'개의 행과 함께 'OTHER_NUMBER'개의 열과 초기 값이 'DEFAULT_VALUE'로 설정된 2 차원 배열로 시각화 할 수 있습니다.
또한 다음과 같이 작성할 수 있습니다.
std::vector <int> line(OTHER_NUMBER, DEFAULT_VALUE)
std::vector<std::vector<int> > v(A_NUMBER, line)
2 차원 벡터에 값을 입력하는 것은 2 차원 배열에 값을 입력하는 것과 유사합니다.
for(int i = 0; i < A_NUMBER; i++) {
for(int j = 0; j < OTHER_NUMBER; j++) {
std::cin >> v[i][j]
}
}
예는 이미 다른 답변에서 언급되었습니다 ....!
가장 쉬운 방법은 다음과 같습니다.
std::vector<std::vector<int>>v(10,std::vector<int>(11,100));
10은 주 벡터 인 외부 또는 전역 벡터의 크기이고 11은 int 유형의 내부 벡터 크기이며 초기 값은 100으로 초기화됩니다! 그것은 스택에 대한 나의 첫 번째 도움입니다. 누군가에게 도움이 될 것 같습니다.
권장되는 접근 방식은 채우기 생성자를 사용하여 지정된 기본값으로 2 차원 벡터를 초기화하는 것입니다.
vector<std::vector<int>> fog(M, std::vector<int>(N, default_value));
여기서 M과 N은 2D 벡터의 차원입니다.
참고URL : https://stackoverflow.com/questions/17663186/initializing-a-two-dimensional-stdvector
'IT story' 카테고리의 다른 글
모두가 계속 말하는이 '람다'는 무엇입니까? (0) | 2020.08.31 |
---|---|
Kotlin 및 Android에서 "매개 변수 T를 추론하기에 정보가 충분하지 않음" (0) | 2020.08.31 |
Appcompatv7-v21 탐색 창에 햄버거 아이콘이 표시되지 않음 (0) | 2020.08.31 |
IE6에서 하나의 (CSS) 차원을 사용하여 이미지 크기를 조정할 때 종횡비를 유지하는 방법은 무엇입니까? (0) | 2020.08.31 |
XML에서 R 데이터 프레임으로 구문 분석하는 방법 (0) | 2020.08.31 |