초기화하지 바이트입니다 어레이로의 어떤 가치 외에 기본값입니다 nulll?
39 m busy i&, C++, C # 로 다시 실시된 늙은 프로젝트.
내 과제는 재작성할 프로그램이 본래의 역할을 있도록 닫으십시오 수 있다.
이 프로그램을 작성하는 과정에서 a bunch of 파일 처리 이전 개발자 누가 작성했습니까 구조 파일 형식으로 해당하는 많은 필드를 포함하는 설정할 수 있다, 그래서 내가 쓴 모든 작업은 이미 끝났다.
이 필드는 모두 바이트입니다 배열입니다. C++ 코드를 사용하여 그 어떤 '은' 모든 공백 문자 ('0x20') 이 전체 구조를 멤세트 설정할 수 있습니다. 한 줄로 코드입니다. 간편해집니다.
이 유틸리티를 매우 중요하다는 결국 이 형식으로 파일을 해당 파일을 마이그레이션된 노리고 있다. # 39 로 변경, 해야 할 것은 어떤 I& 숨기지 않았다, 하지만 난 이 구조체입니다 클래스 C # 의 모든 방법을 쉽게 찾을 수 없는 이러한 각 바이트입니다 어레이에는 초기화하지 공백 문자.
39, ve I& 어떻게 해야 할 것은 이 클래스에서 구성자를 있으면 됐지.
//Initialize all of the variables to spaces.
int index = 0;
foreach (byte b in UserCode)
{
UserCode[index] = 0x20;
index++;
}
이 작품은 I& # 39 m, 좋아요, 하지만 이렇게 간단한 방법을 있어야 합니다. [6] 때 '로 설정되었습니다 어레이입니다 우저고데 = new 바이트입니다 구성자를 자동으로 초기화되었습니다 기본 값이 null 바이트 어레이입니다' 가 된다. 없는 방식으로 내말들어봐 내가 되면 모든 공백을 빛위에 선언 도왔으매 when I call my class& # 39. 구성자를 초기화되었습니다 것이 바로 이렇게? 일부 '또는' 과 유사한 기능을 멤세트?
152
13
소규모 어레이에는 어레이입니다 초기화 구문 사용합니다.
대용량 스토리지 시스템을 위한 표준 '을 사용하여' 루프지 이것이 가장 효과적인 방법으로 읽을 수 있다.
물론 이렇게 할 경우 다음 도우미 코드를 간결하게 유지할 수 있는 방법을 많이 만들 수 있습니다.
이 방법을 사용하여 어레이입니다 만듭다 1 위를 차지했다.
&Lt 굈 ',' 을 (를), 수의 elements> 원하는 스토리지 시스템을 크기.
너메라블레그리피스 () 사용할 수 있습니다.
100 을 어레이입니다 항목에서와 초기화되었습니다 0x20:
초기화 하는 경우 작은 어레이입니다 사용할 수 있습니다.
더 큰 어레이입니다 관심용 경우 사용할 수 있습니다.
이는 향후 담당이잖아요 / 거미요 쉽고 간편하게 읽을 수 있습니다. 충분히 빨리 예정이며 99.9% 의 시간. (일반적으로 BestOption™ 될 것으로 보인다.)
하지만 정말 정말 필요한 경우, 이 방법을 사용하여, P / invoke, 초고속 호출하십시오 아웃하려면 멤세트 최적화되었는지 사용할 수 있습니다. (여기서 랩된 up in a nice 사용할 수 있는 클래스)
사용법:
아마 이 도움이 될 수 있다.
https://stackoverflow.com/questions/1897555/what-is-the-equivalent-of-memset-in-c
http://techmikael.blogspot.com/2009/12/filling-array-with-default-value.html
내 이전에 보세요들 제공했음 대답을 있습니다. 난 그냥 너회의 남용을 포리치 루프지 지적합니다. 이후, loop" 위한 표준 " 증분우선순위수준우선 인덱스화할 지켜보리니 합니다. 뿐만 아니라 약간만이라도 더 작고, 더 효율적인 (" foreach"; 많은 것들이 높여줍니까 후드 아래에):
이 api 를 사용하는 것이 가장 빠른 방법으로.
bR = 0xFF.
틀필기념리 (왕부퍼, n필엘런, bR);
포인터입니다 사용하여, 길이 버퍼입니다 쓸 수 있으며, 인코딩되지 바이트입니다. 내가 생각하는 가장 빠른 길일 관리됨 작은 블록을 만들 수 있는 코드 (훨씬 속도가 느린 (,) 은 이를 바이트입니다 어레이입니다 초기화되었습니다 바이트입니다 부페리브록코프 사용할 수 있는 루프지 쓰기 내가 던진 haven& # 39 이 함께 하지만, t 테스트됨 아니지만, 요점:
이는 빠른 버전의 코드 (post 로 표시된 해답이야
보유하고 있는 모든 벤치마크 보여주는 수행됨 간단한 for 루프 (해당 map_layer 칠 경우 이 같은 일이 어레이에서는 데크레멘팅 대對 경우 일반적으로 두 배 빠른 증가.
또한 어레이입니다 길이 속성은 이미 통과된 만큼, t need to # 39 에서 검색할 수 있도록 매개변수입니다 doesn& 어레이입니다 이다. 미리 계산 및 배정됩니다 로컬 변수 있어야 합니다.
아마도 이 일은 여러 번 길을 위해 단지 내 확장하십시오 답변 깔끔한 다음과 같이 쓸 수 있다.
호출하는:
이를 위한 효율적인 니스 (nice) 의 루프 (언급을 gwiazdorrr& # 39 의 오토메이티드) 뿐만 아니라 좋은 경우 깔끔한 보았으매 호출하십시오 많이유 사용되고 있다. 및 많이유 마로 at-a-glance 판독값 열거도 개인적으로 비해 한 것 같다. )
이 기능은 보다 for 루프는 어레이에서는 채우기 위한 방법입니다.
이 명령은 매우 빠른 메모리 복제본에 라이스코프 시작된다. 이 함수를 호출하는 명령 및 크기를 두 배로 활용할 수 있습니다) 에 의해 그 때까지 반복적으로 라이스코프 우리가 복제본에 어레이입니다 꽉 찼습니다.
내 블로그에 dell. < >, 내가 이 문제를 논의할, http://coding.grax.com/2013/06/fast-array-fill-function-revisited.html
참고로 이 약간만이라도 손쉬운 방법 등을 통해 추가 확장명으로 그냥 단어 " this"; 즉, 공용 정적 무효화 선언 '이 방법을 ArrayFill< T>. ([]' 이 T 라이트필.
취합은 초기화 사용할 수 있습니다.
'반복' 이 보다 더 잘 사용할 수 없는 경우 이 값은 동일해집니다.
속도를 높일 수 있는 코드를 사용하여 초기화 및 간편해집니다 병렬 클래스 (4) 과 .NET 새):
물론 어레이입니다 동시에 만들 수 있습니다.