我感到困惑的是,我有一個由字符串作爲關鍵的size_t的地圖和字符串作爲值。如何串推進迭代器C++通過每一個字符
std::multimap<size_t, std::string> wordMap;
然後,我有一對存儲那時,我想通過equal_range到equal_range年底開始迭代與4大小的所有字符串的equal_range。開始是我的pair.first和end是我的pair.second。我如何遍歷我的pair.first指向的每個字符,然後將它與pair.first和pair.second之間的每個單詞進行比較?
pair<multimap<size_t, string>::iterator, multimap<size_t, string>::iterator> key_range;
key_range = wordMap.equal_range(n);
基本上我想比較word1中的每個字母與word2中的每個字符。 將word2前進itr2到下一個單詞,並將每個字母與word1中的每個字母進行比較。對每個單詞做這個事情,然後將itr1這是word1到另一個單詞,並將其與每個單詞進行比較。 我將如何獲得itr2指向的每個角色?我認爲第一個for循環爲第一個迭代器完成了這一點,但我不知道如何爲itr2做到這一點。
for (word_map::iterator itr = key_range.first; itr != key_range.second; itr++) { //this loop will iterate through every word to be compared
for (word_map::iterator itr2 = next(key_range.first); itr2 != key_range.second; itr2++) { //this loop will iterate through every word being compared against itr1
int i = 0;
int hit = 0;
for (char& c1 : itr->first) {
char& c2{ (itr2)->first[i] };
if(c1 != c2)
hit++;
i++;
}
}
我想在每一個字每一個字母,只要它們具有相同的字符串大小進行相互比較。然後,如果命中== 1,這意味着單詞只有1個字符,並且它們應映射或存儲在某種類型的STL容器中,並將它們分組。我還是新來的STL,所以我在想一套,但我需要更多地閱讀它。
爲(word_map:迭代itr2 = *(key_range ++)。首先是我試過 – user5544610
你可以用'的std ::未來(key_range.first)'到一個後獲得的迭代器。它贏得了」如果提供的迭代器在最後,那麼t工作 –
所以,你基本上想要比較第一個字(由key_range.first指向)和其他每個字(即對每個後續迭代器)? – notmyfriend