使用C ++中的3个元素在地图中搜索和插入

时间:2010-03-06 10:01:17

标签: c++ stl

我需要这样的地图:

typedef std::map<int, float , char> Maptype ;

在此地图中插入和搜索配对元素的语法是什么。

3 个答案:

答案 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> >

无论哪个都是正确的。