2011-08-09 32 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; 
} 

Output từ VS2010:C++ tiêu chuẩn: mặc định "const T & giá trị" trong constructor vector cho loại 'int'

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

Câu hỏi>: Dựa trên C mới nhất chuẩn ++, int mặc định là gì giá trị khi chúng ta định nghĩa một đối tượng của vector bằng cách sử dụng vectorObject (size_type)?

Ở đây bạn có thể thấy, VS2010 xuất ra 0 làm giá trị int mặc định. Nhưng tôi không biết điều này có được yêu cầu bởi tiêu chuẩn C++ hay không.

+3

Tôi sẽ cho phép luật sư ngôn ngữ mang lại sự khác biệt giữa khởi tạo giá trị, khởi tạo mặc định và không khởi tạo. Nhưng hãy yên tâm rằng 'T()' tạo ra số không khi 'T' là một kiểu số nguyên thủy. –

Trả lời

13

Có, đây là hành vi bắt buộc. T() đối với mọi loại số T sản lượng 0 (thuộc loại T, tất nhiên).

Điều này được gọi là khởi tạo giá trị, cho các loại số giống như khởi tạo zero.

+1

Rất hữu ích, đó cũng là nghĩa vụ phải làm việc cho * mảng * của các kiểu số, 'T x [7]();'. –

+1

Xem [câu trả lời này] (http://stackoverflow.com/questions/5950144/weird-c-code-snippet/5950176#5950176) cho toàn bộ tiêu chuẩn. – ildjarn

Các vấn đề liên quan