問題–無効なパラメーターを使用したメンバー関数の呼び出しstd::map::insert:2つの整数値が提供されています。しかし、あるに違いありません std::pair<int, int>。参照を参照してください:std :: map::insert。
望ましいオプション
便宜上(マップタイプのパラメーターを繰り返さないようにするため)、マップのを作成します。typedef
typedef std::map<int, int> IntMap;
(ペア表現)–のstd::mapタイプ定義があります。したがって、たとえば、ある場合はになります。std::pairstd::map::value_typestd::map<int, int>std::map::value_typestd::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));
}