std::map<int,int> mapy;
++mapy[5];
mapy[5]
은 항상 1이라고 가정하는 것이 안전한가요? 내 코드에서와 같이 명시 적으로 선언하지 않더라도 mapy[5]
은 항상 '++'앞에 0의 기본값을 갖습니다.map <int,int> 기본값은
std::map<int,int> mapy;
++mapy[5];
mapy[5]
은 항상 1이라고 가정하는 것이 안전한가요? 내 코드에서와 같이 명시 적으로 선언하지 않더라도 mapy[5]
은 항상 '++'앞에 0의 기본값을 갖습니다.map <int,int> 기본값은
[] 연산자로지도에 액세스하는 즉시 키가 존재하지 않으면 추가됩니다. int 타입의 기본 이니셜 라이저가 호출되므로 0 값을 얻습니다.
내가 경험했던 것과는 달리, 초기화되지 않은 원시 int 형의 초기 값은 _undefined_입니다. 0 일 수도 있고 -99765521 일 수도 있습니다. 클래스 변수로서 초기화되지 않은'int'를 가지고 있고, 그 값중 하나가 당신의 프로그램에 나타났습니다. 즉, 나는 이것을 테스트하고 그것이 효과가있는 것으로 보인다. '#include
그것은 당신이 생각하는 것과는 다른 방식으로 작동합니다. int x; x는 x가 정의되지 않은 값이되도록합니다. int x = int(); 다시 x가 0이됩니다. class foo {int x; foo() : x() {}}; foo f; 여기서 f.x는 0입니다. –
예, 기본값은 해당 유형의 기본값입니다. 다른 기본값을 원하면 int처럼 작동하지만 다른 기본 생성자가있는 클래스를 만들 수 있습니다.
가능한 [build-in 유형의 기본 값 : map] (http://stackoverflow.com/questions/4523959)/stdmap-default-value-for-type) – bobobobo
@bobobobo :이 질문은 [std :: map 기본 설정 값]보다 오래되었습니다. (http://stackoverflow.com/questions/4523959/ stdmap-default-value-for-build-in-type)이면 복제본은 [std :: map build-in type의 기본 값]이어야합니다 (http://stackoverflow.com/questions/4523959/stdmap-default -value-for-build-in-type). – mpromonet