2011-08-09 4 views
5
explicit vector (size_type n, const T& value= T(), const Allocator& = Allocator()); 

vector<int> vec(10); 
cout << "vec.size: " << vec.size() << endl; 
for (vector<int>::const_iterator iter=vec.begin(); iter != vec.end(); ++iter) 
{ 
    cout << *iter << endl; 
} 

Wyjście z VS2010:C++ standard: default "const T & value" w konstruktorze wektorowych dla typu 'int'

vec.size: 10 
0 
0 
0 
0 
0 
0 
0 
0 
0 
0 

question>: oparciu o najnowsze C++ standardowe, co jest domyślnym int wartość, kiedy definiujemy obiekt wektora za pomocą wektora vectorObject (size_type)?

Tutaj, jak widać, VS2010 wyprowadza 0 jako domyślną wartość int. Ale nie wiem, czy jest to wymagane przez standard C++.

+3

Pozwolę prawnikom języków przynieść różnicę między inicjalizacją wartości, domyślną inicjalizacją i zerową inicjalizacją. Ale zapewniamy, że 'T()' daje zero, gdy 'T' jest prymitywnym typem liczbowym. –

Odpowiedz

13

Tak, to wymagane zachowanie. T() dla dowolnego typu liczbowego T daje 0 (oczywiście typu).

ten nazywa wartości inicjalizacji, który typów numerycznych jest taki sam jak zera inicjalizacji.

+1

Przydatnie, to też powinno działać dla * tablic * typów liczbowych, 'T x [7]();'. –

+1

Zobacz [tę odpowiedź] (http://stackoverflow.com/questions/5950144/weird-c-code-snippet/5950176#5950176) dla pełnego standardese. – ildjarn

Powiązane problemy