Saya ingin mengulangi setiap elemen dalam map<string, int>
tanpa mengetahui nilai atau kunci string-intnya.
Apa yang saya miliki sejauh ini:
void output(map<string, int> table)
{
map<string, int>::iterator it;
for (it = table.begin(); it != table.end(); it++)
{
//How do I access each element?
}
}
c++
dictionary
Tanpa nama
sumber
sumber
Jawaban:
Anda dapat mencapai ini seperti berikut:
Dengan C ++ 11 (dan seterusnya) ,
Dengan C ++ 17 (dan seterusnya) ,
sumber
auto const& [key, val] : symbolTable
formatnya!Coba yang berikut ini
Hal yang sama dapat ditulis menggunakan loop biasa
Mempertimbangkan bahwa value_type untuk
std::map
didefinisikan dengan cara berikutJadi dalam contoh saya p adalah referensi const ke value_type di mana Key adalah
std::string
dan T adalahint
Juga akan lebih baik jika fungsi tersebut dideklarasikan sebagai
sumber
The
value_type
darimap
adalahpair
yang berisi kunci dan nilai seperti inifirst
dansecond
anggota masing-masing.Atau dengan C ++ 11, menggunakan rentang berbasis untuk:
sumber
Seperti @Vlad dari Moskow katakan, Memperhitungkan bahwa
value_type
untukstd::map
didefinisikan dengan cara berikut:Ini berarti bahwa jika Anda ingin mengganti kata kunci
auto
dengan specifier tipe yang lebih eksplisit, maka Anda dapat melakukannya;Hanya untuk memahami apa yang
auto
akan diterjemahkan ke dalam kasus ini.sumber