Tôi đang viết một iterator cho một container đang được sử dụng thay cho một container STL. Hiện tại, hộp chứa STL đang được sử dụng ở nhiều nơi với c++11 foreach syntax ví dụ: for(auto &x: C)
. Chúng tôi đã cần thiết để cập nhật mã sử dụng một lớp tùy chỉnh mà kết thúc tốt đẹp container STL:C++ 11 foreach cú pháp và tùy chỉnh iterator
template< typename Type>
class SomeSortedContainer{
std::vector<typename Type> m_data; //we wish to iterate over this
//container implementation code
};
class SomeSortedContainerIterator{
//iterator code
};
Làm thế nào để có được tự động sử dụng iterator chính xác cho container tùy chỉnh để mã có thể được gọi theo trình sau cách ?:
SomeSortedContainer C;
for(auto &x : C){
//do something with x...
}
Nói chung cần phải đảm bảo tự động sử dụng trình lặp vòng chính xác cho một lớp học?
Nếu bạn đang sử dụng Visual Studio, bạn có thể di chuột qua tên của biến để xem loại của nó. IIRC, nó cho thấy loại thực tế, không phải 'tự động'. –