问题——std::map::insert
使用无效参数调用成员函数:提供了两个整数值;但必须有 std::pair<int, int>
。请参阅参考资料:std::map::insert。
首选方案
为方便起见(只是为了不重复地图类型参数),为地图创建一个typedef
:
typedef std::map<int, int> IntMap;
具有(对表示)的std::map
类型定义- 。因此,例如,如果有 a the would be 。std::pair
std::map::value_type
std::map<int, int>
std::map::value_type
std::pair<int, int>
使用std::map::value_type
构造函数(IntMap::value_type
在这种情况下):
class Row {
public:
void Row::addNumber(int num, int pos)
{
m_numMap.insert(IntMap::value_type(num, pos));
}
private:
typedef std::map<int, int> IntMap;
IntMap m_numMap;
};
备择方案:
使用std::make_pair()
功能:
#include <utility>
...
void Row::addNumber(int num, int pos)
{
numMap.insert(std::make_pair(num, pos));
}
直接使用std::pair
构造函数:
void Row::addNumber(int num, int pos)
{
numMap.insert(std::pair<int, int>(num, pos));
}