Tôi vượt qua một Iterator và tôi phải chuyển nó vào một chức năng khác - nhưng được lọc để các phần tử nhất định bị bỏ qua (đó là một loạt các con trỏ, và tôi muốn lọc ra các con trỏ NULL).boost :: filter_iterator - làm thế nào tôi sẽ làm điều đó với STL?
Tôi googled cho "trình lặp bộ lọc stl lọc" để xem cách thực hiện việc này và boost::filter_iterator xuất hiện.
Điều đó có vẻ đẹp và tôi có thể sử dụng nó, nhưng tôi có thể làm điều đó với STL cũ tốt không? Không cần sao chép các thành phần vào một container mới, tất nhiên.
Tôi đoán tôi sẽ phải tạo một lớp trình vòng lặp khác cung cấp các chức năng cần thiết begin()
, end()
v.v ... và lọc không? Vì vậy, tôi muốn chính xác phải thực hiện lại boost
iterator_filter
...?
Tôi hơi không đồng ý: tăng cường có thể cồng kềnh để cài đặt và đôi khi bạn không muốn phụ thuộc thêm đó. Tôi nghĩ rằng một lý do * thực * sẽ không viết lại 'filter_iterator' là nó thực sự khá khó khăn (và rất cồng kềnh) để viết chính xác. –