プログラムに値のペアを格納するstd::mapがあります。マップ内のキーを一意にする必要があります。これは、std::mapクラスの予想される動作です。しかし、ペアを挿入すると、いくつかのキーが繰り返されます。この問題を解決するにはどうすればよいですか?
私のコードは次のとおりです。
map<float,vector<float> *> inpDataMap;
inpDataMap.clear();
for(int i = 0; i < input.getNum(); i++)
{
float xVal = input[i][0];
float yVal = input[i][1];
if(inpDataMap.count(xVal) > 0)
{
myfile << i << " repeated xval: " << xVal << " : " << yVal << endl;
inpDataMap[xVal]->push_back(yVal);
myfile << "repeated value pushed" << endl;
}
else
{
vector<float> *inVec = new vector<float>;
inVec->push_back(yVal);
inpDataMap[xVal] = inVec;
myfile << i << " not repeated:" << xVal << ":" << yVal << endl;
}
}
ご覧のとおり、ここにあるマップは、実際にはフロートと関連付けられたフロートのベクトルの関連付けです。すでにキーが存在する場合、そのキーに対応するベクトルに値が追加されます。しかし、私が言ったように、キーは一意に保存されません。誰かが私がこの問題を解決するのを手伝ってくれる?
Rakesh。