Để minh họa, giả sử tôi có vùng chứa tùy chỉnh hơn là sử dụng STL std::vector
nội bộ. Nếu tôi đã nhập std::vector<char*>::iterator
vào số my_container::iterator
, thì dereferencing trình lặp sẽ trả về char*
. Tuy nhiên, container tùy chỉnh của tôi nên ẩn nội bộ của nó, có nghĩa là tôi muốn một dereferencing để trả lại một char
.Cách tiếp cận tốt nhất để bao gói một container STL trong một iterator tùy chỉnh là gì?
Làm cách nào để thực hiện điều này?
class my_container {
public:
typedef std::vector<char*> vector;
private:
vector vec_;
};
UPDATE:char*
là một ví dụ. Nó không có nghĩa là một chuỗi C; ví dụ sẽ rõ ràng hơn với một số int
.
Ngoài ra, tôi muốn sử dụng std::forward_iterator_tag
và std::iterator
vì điều này có vẻ là phương pháp tiếp cận chuẩn/hiện tại hơn.
Bạn có thể cần phải thực hiện lặp của riêng bạn, một trong đó lặp trên hai cấp độ ('char *' của iterator thực tế, và 'char' cho toán tử tham chiếu của bạn). –
Trường hợp nào 'char' đến từ, bạn có nghĩa là được lặp trên mỗi chuỗi con trong vector hoặc chỉ dereferencing hai lần? – Barry