[英]C++: Iterate Through Map
我正在嘗試遍歷地圖以讀取字符串,然后將向量中的所有數字都讀取到文件中。 我復制並粘貼了typedef行,然后將其調整為我的代碼,因此我不確定它是正確的。 無論如何,Visual Studio在循環中給我關於使用iterator_variable的錯誤。 它說不允許使用類型名稱。 我怎樣才能解決這個問題?
ofstream output("output.txt");
typedef map<string, vector<int>>::iterator iterator_variable;
for (iterator_variable iterator = misspelled_words.begin(); iterator != misspelled_words.end(); iterator++)
{
output << iterator_variable->first;
for (int i = 0; i < misspelled_words.size(); i++)
{
output << " " << iterator_variable->second[i];
}
output << endl;
}
您應該像iterator->first
一樣訪問iterator,而不是iterator_variable->first
。
對於內部循環,您可能想通過0 iterator->second.size()
到iterator->second.size()
而不是misspelled_words.size()
。
ofstream output("output.txt");
typedef map<string, vector<int>>::iterator iterator_variable;
for (iterator_variable iterator = misspelled_words.begin(); iterator != misspelled_words.end(); iterator++)
{
output << iterator->first;
for (int i = 0; i < iterator->second.size(); i++)
{
output << " " << iterator->second[i];
}
output << endl;
}
您也可以使用基於循環和自動的新范圍來獲得更簡潔和易讀的代碼。
ofstream output("output.txt");
for ( auto const & ref: misspelled_words ) {
output << ref.first;
for (auto const & ref2 : ref.second ) {
output << " " << ref2;
}
output << "\n"; // endl force a stream flush and slow down things.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.