ฉัน implementing เป็นอัลกอริธึมใน C++กับเพิ่มกราฟ.
ฉันอยากจะเจอตลอดเวอร์เท็กซ์อยู่ในละแวกบ้านของวี(ดังนั้นทั้งเพื่อนบ้าน)แล้วเปลี่ยนเป็นทรัพย์สินของพวกเขาและในที่สุดล้างทั้งหมดของพวกเขาขอบ.
ฉันเจอในเพิ่มฟังก์ชัน adjacent_vertices(v,g)
นอยู่(v คือเวอร์เท็กซ์และจีนเป็นกราฟ)เพื่อค้นหาทั้งหมดเพื่อนบ้าน งั้นฉันต้องการจะปรับใช้ทั้งหมดของพวกเขาฟังก์ชัน clear_vertex(v,g)
(อีกทีวีเป็นเวอร์เท็กซ์และจีนเป็นกราฟ)เพื่อลบออกทั้งหมดของพวกเขาขอบ.
ตอนนี้ผมมีปัญหา คน adjacent_vertices
ฟังก์ชันจะได้เป็นคู่ adjacency_iterator
ขณะที่เพื่ clear_vertex
ฟังก์ชันฉันต้องการ vertex_iterator
(ถ้าฉันเข้าใจไม่ผิดยังไงพวกนี้ฟังก์ชันที่ทำงาน).
งั้นก็มีทางง่ายๆทางนึงที่จะเปลี่ยนร่าง adjacency_iterator
ใน vertex_iterator
? ถ้าผมเก็บ adjacency_iterator
และมองผ่านมันไป clear_vertex
ฟังก์ชันปัญหาคือมันไม่ได้เอาขอบ(หรือลบพวกเขาแบบสุ่มบางอย่า vertices).
ฉัน ผิด กฎคือ:
Graph::adjacency_iterator v,vend;
for(boost::tie(v,vend) = neighbours; v != vend ; ++v) {
clear_vertex(*v,g2);
}