gpt4 book ai didi

C++:STL multimap.equal_range()

转载 作者:可可西里 更新时间:2023-11-01 15:31:03 31 4
gpt4 key购买 nike

我有这段代码,但我无法理解 equal_range 方法返回迭代器的部分。我知道范围是 pair 对象,里面有两个 multimap 对象,但我不明白的是为什么有 'for (it = range.first; it != range.second;++it)' - 这到底是什么意思?

// multmap.cpp -- use a multimap
#include <iostream>
#include <string>
#include <map>
#include <algorithm>

typedef int KeyType;
typedef std::pair<const KeyType, std::string> Pair;
typedef std::multimap<KeyType, std::string> MapCode;

int main()
{
using namespace std;
MapCode codes;
codes.insert(Pair(415, "San Francisco"));
codes.insert(Pair(510, "Oakland"));
codes.insert(Pair(718, "Brooklyn"));
codes.insert(Pair(718, "Staten Island"));
codes.insert(Pair(415, "San Rafael"));
codes.insert(Pair(510, "Berkeley"));

cout << "Number of cities with area code 415: "
<< codes.count(415) << endl;
cout << "Number of cities with area code 718: "
<< codes.count(718) << endl;
cout << "Number of cities with area code 510: "
<< codes.count(510) << endl;
cout << "Area Code City\n";

MapCode::iterator it;
for (it = codes.begin(); it != codes.end(); ++it)
cout << " " << (*it).first << " "
<< (*it).second << endl;

pair<MapCode::iterator, MapCode::iterator> range
= codes.equal_range(718);

cout << "Cities with area code 718:\n";
for (it = range.first; it != range.second; ++it) //<------------------ here
cout << (*it).second << endl;
return 0;
}

最佳答案

equal_range 的结果,即您的 range 对象,是两个迭代器 [beginning-of-range,范围结束)。所以你想迭代 [range.first, range.second):

auto range = m.equal_range(4);

+---+---+---+---+---+---+---+---+---+
| 2 | 3 | 3 | 4 | 4 | 4 | 4 | 5 | 6 | =: m
+---+---+---+---+---+---+---+---+---+
^ ^
| |
range.first range.second

关于C++:STL multimap.equal_range(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495243/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com