2012-11-27 31 views
6

Tôi tìm thấy trong bài đăng cách xóa các phần tử khỏi vùng chứa bằng trình lặp. Trong khi lặp lại:biến tự động và loại của nó

for(auto it = translationEvents.begin(); it != translationEvents.end();) 
    { 
     auto next = it; 
     ++next; // get the next element 
     it->second(this); // process (and maybe delete) the current element 
     it = next; // skip to the next element 
    } 

Tại sao auto được sử dụng mà không có loại trong auto next = it;?

Tôi sử dụng VS10, chứ không phải C++ 11!

+0

Xem [suy luận kiểu C++ 11] (http://en.wikipedia.org/wiki/C%2B%2B11#Type_inference) – juanchopanza

+5

VS10 có C++ 11 theo mặc định. Vì vậy, bạn sử dụng C++ 11. –

Trả lời

12

auto có ý nghĩa khác trong C++ 11 so với trước đây. Trong các tiêu chuẩn trước đó, auto là một bộ định danh lưu trữ cho thời lượng lưu trữ tự động - lưu trữ thông thường một đối tượng có nơi nó bị phá hủy ở cuối phạm vi của nó. Trong C++ 11, từ khóa auto được sử dụng để loại trừ các biến. Loại biến được suy ra từ biểu thức đang được sử dụng để khởi tạo nó, nhiều trong cùng một cách các tham số mẫu có thể được suy ra từ các kiểu của các đối số của hàm mẫu.

Loại khấu trừ này hữu ích khi nhập các loại dài xấu xí không có lợi ích. Thông thường, loại này hiển nhiên từ trình khởi tạo. Nó cũng hữu ích cho các biến có loại có thể phụ thuộc vào sự khởi tạo của mẫu mà nó xuất hiện.

Nhiều tính năng C++ 11 được hỗ trợ mặc định trong VC10 và auto là một trong số chúng.

+0

cái gì? được hỗ trợ trong vC++ 2010? tôi không biết rằng –

+0

Điều này có nghĩa là tự động không còn xử lý thời lượng lưu trữ hay chỉ đơn thuần là nó đã tăng lên những gì nó làm? – MrMesees

4

Đây là phiên bản ngắn gọn trong các phiên bản mới hơn của C++, cho phép chúng ta tránh ký hiệu lặp lặp lại, vì trình biên dịch có thể suy ra loại thực tế được cho là gì.

2

Nó được gọi là Type Inference, xem thêm this question để biết chi tiết. Mới trong C++ 11, và nhằm đơn giản hóa nhiều mã dài và không cần thiết, đặc biệt là cho các trình lặp và các ràng buộc hàm.

2

Điều này được gọi là type inference. Loại biến số tự động được suy ra theo loại của bộ khởi tạo.

Ví dụ: điều này làm giảm số lượng loại cho loại mẫu lớn và phức tạp.

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