2011-01-31 37 views
37

Ý nghĩa của câu lệnh C++ này là gì?vector <int> :: size_type trong C++

vector<int>::size_type x; 

Và việc sử dụng toán tử phạm vi :: ở đây là gì? Nói cách khác, làm thế nào để chúng ta đọc tuyên bố này bằng tiếng Anh?

Ví dụ: đối với X::x(){...}, chúng tôi nói rằng x()member function của class X.

Trả lời

52

size_type là một loại thành viên (tĩnh) thuộc loại vector<int>. Thông thường, đây là số typedef cho std::size_t, thường là số typedef cho unsigned int hoặc unsigned long long.

+7

Ngoại lệ đối với 'thường' này là gì? Tức là, khi nó là bất thường? – ibrahim5253

+1

"Thông thường" có nghĩa là tiêu chuẩn không chỉ định nó, nhưng đó là những gì các triển khai phổ biến đã chọn để làm. Trên thực tế, tôi biết một "ngoại lệ". Linux glibc sử dụng 'unsigned long' cho' size_t' trên nền x86_64. – proski

3

vector là một mẫu

để loại vector templated với int có thành viên typedef gọi size_type. x được định nghĩa là biến của loại đó.

18

Tôi sẽ đọc nó là "khai báo x dưới dạng biến của loại phù hợp để giữ kích thước của vectơ". Vectơ xác định loại riêng của nó cho độ dài của nó và luôn luôn sạch sẽ nhất để sử dụng nếu có thể, thay vì "đoán" và sử dụng int, unsigned int, long, unsigned long hoặc size_t v.v.

+1

Có cần thiết phải bao gồm phần này 'vector '? Làm thế nào chúng ta có thể định nghĩa 'x' là' size_type' mà vectơ định nghĩa cho chính nó? Cảm ơn – Simplicity

+3

@ user588855: Có, tên đầy đủ phải được sử dụng. Có thể là vector là một mẫu chuyên biệt, có size_type khác với ví dụ: vector :: size_type. – unwind

+1

Trong trường hợp 'vector :: size_type', kích thước không phải là' int'? khi bạn nói rằng 'size_type' có thể khác trong trường hợp này, ý bạn là gì? Cảm ơn – Simplicity

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