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