ฉันมีชั้นเรียนที่แสดงถึงรายชื่อของผู้คน
class AddressBook
{
public:
AddressBook();
private:
std::vector<People> people;
}
ฉันต้องการอนุญาตให้ลูกค้าทำซ้ำเวกเตอร์ของผู้คน ความคิดแรกที่ฉันมีก็คือ:
std::vector<People> & getPeople { return people; }
แต่ฉันไม่ต้องการที่จะรั่วไหลรายละเอียดการดำเนินการให้กับลูกค้า ฉันอาจต้องการรักษาค่าคงที่บางอย่างเมื่อมีการแก้ไขเวกเตอร์และฉันสูญเสียการควบคุมค่าคงที่เหล่านี้เมื่อฉันรั่วการใช้งาน
วิธีที่ดีที่สุดในการอนุญาตให้ทำซ้ำโดยไม่รั่วไหลภายในคืออะไร?
begin()
และend()
เป็นอันตรายเพราะ (1) ผู้ประเภท iterators เวกเตอร์ (เรียน) set
ซึ่งจะช่วยป้องกันจากการเปลี่ยนมาใช้ภาชนะอื่นเช่น (2) หากมีการแก้ไขเวกเตอร์ (เช่นโตขึ้นหรือลบบางรายการ) เวกเตอร์ตัววนซ้ำบางส่วนหรือทั้งหมดอาจไม่ถูกต้อง