Chuẩn C++ có nói rằng tôi có thể so sánh hai trình lặp STL mặc định được xây dựng mặc định cho bình đẳng không? Các trình vòng lặp được xây dựng mặc định có được so sánh bằng nhau không?So sánh các biến lặp được xây dựng mặc định với toán tử ==
Tôi muốn những điều sau đây, sử dụng std :: danh sách ví dụ:
void foo(const std::list<int>::iterator iter) {
if (iter == std::list<int>::iterator()) {
// Something
}
}
std::list<int>::iterator i;
foo(i);
Những gì tôi muốn ở đây là một cái gì đó giống như một giá trị NULL cho vòng lặp, nhưng tôi không chắc chắn nếu đó là hợp pháp. Trong việc thực hiện STL đi kèm với Visual Studio 2008, chúng bao gồm các xác nhận trong std :: toán tử danh sách ==() loại trừ việc sử dụng này. (Họ kiểm tra rằng mỗi iterator là "sở hữu" bởi cùng một container và iterators xây dựng mặc định không có container.) Điều này sẽ gợi ý rằng nó không hợp pháp, hoặc có lẽ rằng họ đang quá hăng hái.
'boost :: tùy chọn' đến với tâm trí. –
MSalters