我需要这样的地图:
typedef std::map<int, float , char> Maptype ;
在此地图中插入和搜索配对元素的语法是什么。
答案 0 :(得分:14)
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;
答案 1 :(得分:7)
你不能有三个要素。 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。
答案 2 :(得分:6)
使用
std::map<std::pair<int, float>, char>
或
std::map<int, std::pair<float, char> >
无论哪个都是正确的。