2014-12-22 2 views
2

wchar_t a[1000] 배열이 있습니다.동일한 값을 갖는 wchar 배열 요소 채우기

내가 같은 값으로 배열 요소 채우려는

:

a[0]= 'w', a[1]= 'w',...a[999] = 'w'. 

이 작업을 수행 할 수있는 빠른 방법이 있습니까를?

당신은 표준을 사용할 수 있습니다

+0

왜 그런 짓을하고 싶은가요? –

+0

같은 값을 가진 배열 요소를 초기화/수정하려고합니다. – reiko

+0

'wchar_t'을 의미합니까? –

답변

3

(각 값을 할당하는 for 루프를 사용하지 않고) : 글로벌로 선언 알고리즘

#include <algorithm> 
#include <array> 

int main(){ 
    std::array<wchar, 1000> a; 
    std::fill(a.begin(), a.end(), 'w'); 

} 
+1

이것은'std :: array not_a_reserved_name;'이 아니어야합니까? –

+0

@MattMcNabb 기본 초기화를 보장합니다. 정의되지 않은 동작을 방지하기 위해 변수를 초기화 할 때마다 변수를 선언 할 때마다 사용하도록 가르쳐 왔습니다. 잘 모르는 것이 최선의 방법입니다 ... – user2393256

+0

@ πάνταῥεῖ 나는 단지 reiko의 예를 사용했습니다. 하지만 그래, 나는 다른 변수 이름을 사용해야한다 – user2393256

0

칠하고, 'w'의의와 함께 초기화합니다. 죄송합니다. 수동으로해야하지만 ISO C++은 메타 프로그래밍을 좋아하지 않습니다.

wchar_t a[1000] { 'w', 'w' /*............*/ }; 

이것은 프로그램이로드 될 때 배열 데이터가 메모리에 직접 복사되므로 가장 빠른 방법입니다.

+0

왜 _Global_로 선언 하시겠습니까? –

+0

내가 말한대로 - 메모리에 직접로드되기 때문에 가장 빠른 방법입니다. – AnArrayOfFunctions

+0

전역 변수에 대한 조언이 현명하지 않으며 이니셜 라이저 구문이 스택 변수에도 잘 적용된다는 사실을 알지 못합니다. 또한 배열의 모든 나머지 부분에 사용되는''W ''라는 단일 초기화 장치 만 필요합니다. –

1
GCC에서

당신이

wchar_t a[1000] = {[0 ... 999] = 'w'}; 
+0

다른 컴파일러에서는 C++ 메타 프로그래밍이 레벨 0에 있기 때문에 손으로 직접 작성해야합니다. – AnArrayOfFunctions

+0

Solvable with definitions . 부스트에서 사용할 수있는 것을 살펴보십시오. – strannik

0

내가 생각할 수있는 가장 컴팩트 한 방법은 std::vector 사용하는 것입니다 사용할 수 있습니다 - 하나의 생성자는 정확하게 당신이 원하는 일을한다 (내부적하지만 루프를 사용할 수 있습니다) :

std::vector<wchar_t> a(1000, 'w'); 
+0

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. – NKN

+0

@NKN은 아직 그렇지 않습니까? –

관련 문제