루프를 사용하지 않고 벡터 크기를 유지하지 않고 vector<vector<int>>
의 모든 값을 0으로 재설정하는 방법.2D 벡터의 모든 값을 재설정하는 가장 빠른 방법은 무엇입니까?
답변
당신은 for
루프 또는 std::for_each
와 조합 std::fill
를 사용한다 : 여기
for (auto &v: vec) {
std::fill(v.begin(), v.end(), 0);
}
std::fill
가능성 (괜찮은 컴파일러 및 최적화 플래그) std::memset
다시 하나의 호출에 떨어질 것이다, 그러나 당신은 필요 for
첫 번째 차원입니다.
2-D std::vector
은 단일 메모리 블록이 아니므로 모든 것을 한 번에 0
으로 재설정 할 방법이 없습니다.
당신은 표준 std::fill
및 std::for_each
알고리즘을 사용할 수 있습니다 즉시 반복하지 않고 한 번에 std::vector
의 여러 요소를 설정하는 방법은 없습니다 :이 알고리즘은 내부적으로 루프로 구현되는 것을
std::vector<std::vector<int>> vec;
// Iterate over the first dimension of vectors...
std::for_each(vec.begin(), vec.end(), [](std::vector<int>& inner_vec)
{
// ...fill every inner vector with zeros.
std::fill(inner_vec.begin(), inner_vec.end(), 0);
});
참고.
실제로'std :: fill'은 (for std :: vector
@Holt : 실제로 libstdC++ 개발자가'std :: memset'로 구현 했나요? 아니면'for' 루프를 최적화하는 컴파일러입니까? 컴파일러는 이러한 사소한 상황에서'for'를'memset'와 동일한 코드로 변환 할 수 있습니다. –
컴파일러는 최적화 된 컴파일러이지만'std :: fill' 내부의'for' 루프뿐만 아니라'std :: fill'에 대한 호출이기 때문에 위의 루프 본문은 기본적으로'std :: memset (inner_vec 요점은 성능 문제 때문에'std :: fill'를 두려워해서는 안된다는 것입니다 (즉, .data(), 0, (inner_vec.end() - inner_vec.begin()) * sizeof (int))' 대부분의 경우 최적화 됨). – Holt
- 1. 벡터의 회전을 찾는 가장 빠른 방법
- 2. GLSL에서 값을 전달하는 가장 빠른 방법은 무엇입니까?
- 3. 배열 값을 수정하는 가장 빠른 방법은 무엇입니까?
- 4. 카운터 값을 재설정하는 방법은 무엇입니까?
- 5. 2D 벡터의 미리 결정된 위치에서 여러 값을 변경하는 가장 쉬운 방법은 무엇입니까?
- 6. 거대한 numpy 2D 배열을 만들고 채우는 가장 빠른 방법은 무엇입니까?
- 7. Java에서 2D int 배열을 복사하는 가장 빠른 방법은 무엇입니까?
- 8. 파일에서 큰 2D int 배열을로드하는 가장 빠른 방법은 무엇입니까?
- 9. 배열 값을 0으로 재설정하는 가장 간단한 방법은 무엇입니까?
- 10. C++에서 벡터의 모든 요소를 인쇄하는 가장 좋은 방법은 무엇입니까?
- 11. 가장 빠른 저장 방법은 무엇입니까?
- 12. iOS에서 가장 빠른 그리기 방법은 무엇입니까?
- 13. 가장 빠른 방법은?
- 14. Java에서 벡터의 2D 배열을 시각화하는 방법
- 15. 닫은 후 양식 값을 재설정하는 방법은 무엇입니까?
- 16. DataGridview에서 SELECTEDROWS의 열 값을 설정하는 가장 빠른 방법은 무엇입니까?
- 17. 입력 텍스트 값을 기본값으로 재설정하는 방법은 무엇입니까?
- 18. 연간 SQL ID 값을 재설정하는 방법은 무엇입니까?
- 19. 파이썬에서 사전을 통해 값을 재설정하는 방법은 무엇입니까?
- 20. mysql에서 자동 증가 값을 재설정하는 방법은 무엇입니까?
- 21. AX 2012에서 테이블 값을 재설정하는 방법은 무엇입니까?
- 22. ngrx/store의 모든 상태를 재설정하는 방법은 무엇입니까?
- 23. root @ phpmyadmin의 모든 권한으로 재설정하는 방법은 무엇입니까?
- 24. 모든 mysql 통계를 재설정하는 방법은 무엇입니까?
- 25. 모든 변수를 초기 상태로 재설정하는 방법은 무엇입니까?
- 26. 맞춤 라벨이있는 날짜의 값을 가져 오는 가장 빠른 방법은 무엇입니까?
- 27. Kdevelop 디버거에서 벡터의 값을 보는 방법은 무엇입니까?
- 28. 벡터의 값을 참조로 반환하는 방법은 무엇입니까?
- 29. Matlab에서 벡터의 정렬 값을 정렬하는 방법은 무엇입니까?
- 30. 벡터의 모든 하위 벡터를 반복하는 방법은 무엇입니까?
가장 빠른 방법은 루프를 사용하는 것입니다. – LogicStuff