2011-01-09 2 views
0

배열의 크기를 조정하고 싶지만 모든 추가 값이 0이 아니길 바랄뿐입니다."0"이외의 값으로 Array.Resize하는 것이 가장 효율적입니다.

Array.Resize(ref range, range.Length + grow); 

당신이 첨부 된 길이는 항상 (float를 보유 할 충분한) 4 바이트의 배수라고 가정하면, float.MaxValue 또는 float.MinValue 중 하나에이를 채울 수있는 가장 좋은 방법은 무엇입니까?

+0

루프가 올바른 방법입니다. 기본 바이트에 고정 된 메모리 액세스를 사용하면 언제든지 시작할 수 있지만 정말로 필요합니까? –

+0

루프 내에서 어떤 기능을 사용하는지 알고 있습니까? 포인터만으로도 나를 시작할 수 있습니다. – LamonteCristo

답변

3

추가 된 항목을 반복하여 값을 할당하면됩니다. 컴파일러는 루프 밖에서 배열 인덱스의 범위 검사 만 수행하는 코드를 생성하므로 루프가 매우 효율적입니다.

int oldSize = range.Length; 
Array.Resize(ref range, range.Length + grow); 
for (int i = oldSize; i < range.Length; i++) { 
    range[i] = float.MinValue; 
} 

당신은 Array.Resize 실제로 배열의 크기를 조정하지 않는다는 것을 알고 있어야하지만, 원하는 크기와 원본 배열에 복사 된 데이터를 새로운 배열을 작성합니다. 따라서 컬렉션의 크기를 효율적으로 조정하려면 배열을 전혀 사용하지 않아야합니다. 필요에 따라 List, List of List 또는 LinkedList와 같은 것이 더 나을 것입니다.

+2

리스트는 배열을 보조 저장소로 사용합니다. 목록의 크기가 조정되면 특정 조건에서 목록에 배열 복사가 있습니다. –

관련 문제