큰 이중 벡터를 할당했으며, 100000 요소로 말할 수 있습니다. 내 코드의 어느 시점에서 모든 요소를 일정한 0이 아닌 값으로 설정하려고합니다. 모든 요소에 대해 for 루프를 사용하지 않고 어떻게이 작업을 수행 할 수 있습니까? 도움이된다면 blas 패키지도 사용하고 있습니다.0이 아닌 값 (blas)을 사용하여 double 배열을 초기화하십시오.
답변
당신은 std::fill
(#include <algorithm>
) 사용할 수 있습니다
std::fill(v.begin(), v.end(), 1);
이 본질적 물론 단지 루프입니다 ..
당신이 루프하지 않으려면 항상 memset()
를 사용합니다.
즉, memset(myarr, 5, arrsize);
입니다. 모두 5로 채우십시오. unsigned char로 암시 적 변환을주의하십시오.
사용법
#include <string.h> void * memset(void *b, int c, size_t len);
설명
The memset() function writes len bytes of value c (converted to an unsigned char) to the byte string b.
그리고
벡터 큰, 당신은 빨리 갈 필요하면 다음 GCC를 사용하는 경우 :블록 이동 코드 생성 (memcpy) 및 블록 집합 (memset)이 다시 작성되었습니다. GCC는 복사 할 블록의 크기를 , 최적화 할 CPU를 으로하여 (루프, 언 롤 루프, rep 접두어 또는 라이브러리 호출을 사용하는 명령) 알고리즘을 선택할 수 있습니다.
-1 : 그는 두 배 벡터와 두 배의 벡터에 대한 memset을 가지고 있습니다. 벡터 밑에 연속 된 배열로 이해할 수 있습니다. 특히 0이 아닌 값을 원할 때는 사소한 것이 아닙니다. memset을 통해 설정할 수있는 값은 바이트 (unsigned char의 크기)이며, 설정하려는 상수는 4 바이트입니다. –
읽는 동안 이중 벡터가 누락되었습니다. 그가 4bytes를 모두 채워야한다면, 그렇습니다. 다른면에서 그는 아마도 "사용되지 않은"것으로 표시하고 1 바이트가 트릭을 수행 할 수 있습니다. – Milan
그래도 그 일을 언급하는 OP가 보이지 않습니다. 그러나 그의 질문에 정확하게 말하면 나는 std :: fill이 최선의 선택이라고 믿는다. –
'채우기'는 귀하가 말한 바로는 것입니다.
std::vector<double> vec(100000, 3.14);
그래서 "어떤 점에서"의미있는 경우 "즉시 건설 후"대신 이렇게 :
는 지정된 값의 전체 벡터를 구성 할 수도 있음을 유의하십시오. 또한,이 작업을 수행 할 수 있음을 의미합니다 : "어떤 시점에서" "바로 크기를 변경 한 후"의미하고, 당신이 만약 "기대"(/는 벡터가 재 할당 할 것으로 예상되는 경우 유용 할 수 있습니다std::vector<double>(100000, 3.14).swap(vec);
이전 용량보다 더 크게 만들고 있습니다. 작게 만들고 메모리를 절약하기 위해 손질하려는 경우 "원하는"것이 좋습니다.
- 1. 스레드의 관리되는 배열을 초기화하십시오.
- 2. 같은 텍스트이지만 0이 아닌 diff
- 3. 0이 아닌 인덱스로 시작하는 배열의 목적은 무엇입니까?
- 4. 바이트 배열을 C에서 double 변환 #
- 5. 반복자를 사용하여 std :: list에서 std :: vector를 초기화하십시오.
- 6. 레일스 모델의 속성이 0이 아닌 것처럼 보입니다.
- 7. PHP의 Sleep 명령이 0이 아닌 값을 반환합니다.
- 8. timeperiod 그룹은 0이 아닌 합계 만 표시합니다.
- 9. 이 빼기가 0이 아닌 이유는 무엇입니까?
- 10. 0이 아닌 함수 도움말, Python Numpy
- 11. NSString과 같은 double 값 표현
- 12. java - 참조로 double 값 전달
- 13. PDF의 자바 스크립트 double 값
- 14. 장고, 잘린 잘못된 DOUBLE 값 :
- 15. VB.NET에서 double 배열을 바이트 배열로 변환 하시겠습니까?
- 16. C에서 double 배열을 shmget하고 shmat하는 방법은 무엇입니까?
- 17. find ('list) 쿼리에서 double 배열을 반환하는 CakePHP입니다.
- 18. 루비에서 다른 값 배열을 사용하여 배열 검색
- 19. VB.Net Double double to
- 20. Resin 서버의 메소드를 사용하여 ServletContext를 초기화하십시오.
- 21. .net 변환 bytearray double []
- 22. 0이 아닌 인덱스가있는 기본 키 생성 (SSIS 데이터 흐름)
- 23. 내가 PHP에서이 배열을 값
- 24. 장고 오류 : 잘린다 잘못된 DOUBLE 값 : 'AnonymousUser'
- 25. 최대 허용치는 무엇입니까? iPhone의 double/float 값?
- 26. IOS : 텍스트 필드 및 double 값
- 27. ID가 아닌 값 얻기
- 28. DOUBLE 타입의 MySQL min/max
- 29. 강제로 데이터 바인딩을 초기화하십시오.
- 30. Excel 2007 ComboBox를 차트에서 초기화하십시오.
** 특정 유형 및 반복기 범주에 최적화 될 수 있음을 제외하고 ** (** 가능성이 희박하더라도). –
이 방법을 권하고 싶습니다. –