我有一对和一张声明为
的地图typedef pair<string,string> Key;
typedef map< Key, double> Map;
我通过for循环将对象插入到它们中
Key p (string1, string2 );
pair_map.insert(make_pair( p, double1 ) );
我怎样才能在地图中找到元素?我在使用find设置迭代器时遇到问题。
假设我正在使用it = pair_map.find(make_pair(string1,string2))
;
我已尝试声明pair_map<Key, double>::iterator it;
或map<Key, double>::iterator it;
,但两者都不适合我。我该如何解决这个问题?
由于typedef的
,我得到的错误都是长期无效的转换错误答案 0 :(得分:6)
Map::iterator it = pair_map.find(make_pair(string1, string2));
当然你可以使用
auto it = ...;
或
decltype(pair_map.begin()) it = ...;
在C ++ 11中。
答案 1 :(得分:4)
你需要
Map::iterator it = ....
或者,在C ++ 11中,
auto it = pair_map.find(make_pair(string1, string2));
答案 2 :(得分:2)
pair_map
是变量的名称,而不是类型。
Map::iterator it = pair_map.find(make_pair(string1,string2));
(正如juanchopanza所说)将会起作用,
std::map<Key, double>::iterator it = pair_map.find(make_pair(string1,string2));
或
auto it = pair_map.find(make_pair(string1,string2));
如果你有C ++ 11。
答案 3 :(得分:1)
不要将变量名称用于迭代器类型,而是使用类型名称,例如而不是:
pair_map<Key, double>::iterator it;
使用
Map::iterator it;
或者
map<Key, double>::iterator it;
实际上,你不应该输入你map
,因为它令人困惑。只需在任何地方使用该模板。