人々のリストを表すクラスがあります。
class AddressBook
{
public:
AddressBook();
private:
std::vector<People> people;
}
クライアントが人々のベクトルを反復処理できるようにします。私が持っていた最初の考えは単純でした:
std::vector<People> & getPeople { return people; }
しかしながら、 実装の詳細をクライアントに漏らしたくありません。ベクトルが変更されたときに特定の不変式を維持したい場合があり、実装をリークするとこれらの不変式に対する制御が失われます。
内部をリークすることなく反復を許可する最良の方法は何ですか?
begin()
とend()
危険set
です。(2)ベクターが変更された場合(たとえば、成長または一部のアイテムが消去された場合)、ベクターイテレーターの一部またはすべてが無効化された可能性があります。