사람들의 목록을 나타내는 수업이 있습니다.
class AddressBook
{
public:
AddressBook();
private:
std::vector<People> people;
}
고객이 사람들의 벡터를 반복하도록하고 싶습니다. 내가 가진 첫 번째 생각은 간단했습니다.
std::vector<People> & getPeople { return people; }
그러나 구현 세부 정보를 클라이언트에 유출하고 싶지 않습니다 . 벡터가 수정 될 때 특정 불변을 유지하고 싶을 수 있으며 구현을 누출하면 이러한 불변에 대한 제어를 잃습니다.
내부를 누설하지 않고 반복을 허용하는 가장 좋은 방법은 무엇입니까?
begin()및 end()(1) 이들 유형의 예로서 다른 컨테이너로 전환을 방지 벡터 반복자 (클래스)이기 때문에 위험하다 set. (2) 벡터가 수정되면 (예 : 성장 또는 일부 항목 삭제) 벡터 반복기의 일부 또는 전부가 무효화되었을 수 있습니다.