Contoh umum untuk rentang C ++ 11 berbasis untuk () selalu sesuatu yang sederhana seperti ini:
std::vector<int> numbers = { 1, 2, 3, 4, 5, 6, 7 };
for ( auto xyz : numbers )
{
std::cout << xyz << std::endl;
}
Dalam hal xyz
ini adalah int
. Tapi, apa yang terjadi ketika kita memiliki sesuatu seperti peta? Apa jenis variabel dalam contoh ini:
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?
}
Ketika kontainer yang dilalui adalah sesuatu yang sederhana, sepertinya rentang berbasis untuk () loop akan memberi kita setiap item, bukan iterator. Yang bagus ... jika itu iterator, hal pertama yang harus selalu kita lakukan adalah tetap melakukannya.
Tapi saya bingung apa yang diharapkan ketika datang ke hal-hal seperti peta dan multimaps.
(Saya masih menggunakan g ++ 4.4, sedangkan loop berbasis rentang ada di g ++ 4.6+, jadi saya belum memiliki kesempatan untuk mencobanya.)
std::begin
danstd::end
fungsi atau fungsi anggota dengan nama yang sama.