ตัวอย่างทั่วไปสำหรับลูป C ++ 11 ที่ใช้สำหรับ () เป็นบางสิ่งที่ง่ายเช่นนี้เสมอ:
std::vector<int> numbers = { 1, 2, 3, 4, 5, 6, 7 };
for ( auto xyz : numbers )
{
std::cout << xyz << std::endl;
}
ซึ่งในกรณีที่เป็นxyz
int
แต่จะเกิดอะไรขึ้นเมื่อเรามีบางอย่างที่เหมือนแผนที่ ชนิดของตัวแปรในตัวอย่างนี้คืออะไร:
std::map< foo, bar > testing = { /*...blah...*/ };
for ( auto abc : testing )
{
std::cout << abc << std::endl; // ? should this give a foo? a bar?
std::cout << abc->first << std::endl; // ? or is abc an iterator?
}
เมื่อคอนเทนเนอร์ที่ถูกสำรวจเป็นสิ่งที่เรียบง่ายดูเหมือนว่าช่วงตาม () สำหรับลูปจะให้แต่ละรายการไม่ใช่ตัววนซ้ำ อันไหนดี ... ถ้าเป็นตัววนซ้ำสิ่งแรกที่เราต้องทำเสมอคือการอ้างถึงมันอยู่ดี
แต่ฉันสับสนว่าจะคาดหวังอะไรเมื่อพูดถึงสิ่งต่างๆเช่นแผนที่และ Multimaps
(ฉันยังอยู่ใน g ++ 4.4 ในขณะที่ลูปอิงช่วงอยู่ใน g ++ 4.6+ ดังนั้นฉันยังไม่ได้ลองเลย)
std::begin
และstd::end
ฟังก์ชันมาตรฐานหรือฟังก์ชันสมาชิกภายใต้ชื่อเดียวกัน