簡體   English   中英

C ++:遍歷地圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM