벡터를 0으로 초기화 C ++ / C ++ 11


118

나는 C ++ 11에서 변수를 0으로 초기화하는 기능을 추가했다는 것을 알고 있습니다.

double number = {}; // number = 0
int data{};  // data = 0

std::vector고정 길이의 a를 모두 0 으로 초기화하는 비슷한 방법 이 있습니까?


13
std::vector<int> vec(42);
avakar

9
BTW,이 C ++ 11에서 새로운 것이 아니다, 당신은뿐만 아니라 이전 버전에서이 작업을 수행 할 수 있습니다
balki

답변:


220

이를 위해 초기화 목록이 필요하지 않습니다.

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);

37
0을 명시 적으로 말할 필요는 없습니까? 단지 vector(length)일을해야합니까?
Daniel Gratzer 2012 년

38
@jozefg : 예, 작동합니다.하지만 코드가 원하는 작업에 대해 명시 적으로 설명하는 것은 해가되지 않습니다.
ronag

1
@ronag 나는 int가 그가 작업하는 유형이 아니라면이 경우 명시 적으로 좋은 예가 아니기 때문에 내 자신의 대답을 썼습니다. gereral 프로그래밍은 C ++에서 사용할 수 있지만 인수를 모두 생략 할 수 있다는 것을 상기 시켰을 때 내 대답을 제거했습니다.
Johannes Schaub-litb

1
ronag가 보여준 것과 같이 선언에 다른 값을 지정하지 않는 한 벡터는 자동으로 0으로 초기화됩니다.
Nikos

ZEROfor 루프를 사용하지 않고 효율적 으로 with를 사용하여 Global Vector의 모든 요소를 ​​다시 초기화 할 수 있습니까 ??????
Ankit Mishra

0

struct, class 또는 Union이있는 벡터를 초기화하는 것은이 방법으로 수행 할 수 있습니다.

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.