這個例子中使用的equal_range
是提供在cplusplus.com網站:multmap equal_range在C++
int main()
{
std::multimap<char,int> mymm;
mymm.insert(std::pair<char,int>('a',10));
mymm.insert(std::pair<char,int>('b',20));
mymm.insert(std::pair<char,int>('b',30));
mymm.insert(std::pair<char,int>('b',40));
mymm.insert(std::pair<char,int>('c',50));
mymm.insert(std::pair<char,int>('c',60));
mymm.insert(std::pair<char,int>('d',60));
std::cout << "mymm contains:\n";
for (char ch='a'; ch<='d'; ch++)
{
std::pair <std::multimap<char,int>::iterator, std::multimap<char,int>::iterator> ret;
ret = mymm.equal_range(ch);
std::cout << ch << " =>";
for (std::multimap<char,int>::iterator it=ret.first; it!=ret.second; ++it)
std::cout << ' ' << it->second;
std::cout << '\n';
}
和輸出被說成是:
mymm contains:
a => 10
b => 20 30 40
c => 50 60
d => 60
但不是這個錯誤?例如,對於'd',條件it!=ret.second
將立即失敗,循環將永遠不會執行?或者我弄錯了嗎? (這一點很重要,因爲我在這個例子中已經有了一些代碼,並且第二次看起來認爲它可能會行事不端。)
迭代器間隔半開。 – chris