搜索和地图项目,在C++
A map
只能将一种密钥类型映射到一种数据类型。如果数据包含2个元素,请使用结构或std::pair
。
typedef std::map<int, std::pair<float, char> > Maptype;
...
Maptype m;
m[123] = std::make_pair(0.5f, 'c');
...
std::pair<float, char> val = m[245];
std::cout << "float: " << val.first << ", char: " << val.second << std::endl;
避免通过指定参考将该对复制出地图: std :: pair
你不能有三个元素。 STL map
存储键值对。你需要决定你将用什么作为关键。一旦这样做,你也许可以嵌套其他两个在一个单独的地图,并把它作为:
typedef std::map<int, std::map<float, char> > MapType;
为了在地图中插入,使用operator[]
或insert
成员函数。您可以使用find
成员函数进行搜索。
MapType m;
// insert
m.insert(std::make_pair(4, std::make_pair(3.2, 'a')));
m[ -4 ] = make_pair(2.4, 'z');
// fnd
MapType::iterator i = m.find(-4);
if (i != m.end()) { // item exists ...
}
此外,你可以看看Boost.Tuple。
感谢您的信息。如何在Map中搜索这对。 它会是m.find(STD :: make_pair(3.2,'a');? – John 2010-03-06 11:29:12
@John:你总是搜索密钥,如果你的密钥是'pair
@dirkgently:上面的例子不起作用,如果我使用两个类指针实例和一个字符串,就像typedef std :: map
哪一个是关键? – sbi 2010-03-06 10:17:54
请检查你没有得到困惑。如果地图是排序命令,地图可以包含第三个元素。 – Owl 2016-10-12 12:56:52