をマップするために、私は、データ用の構造体のキーとしてのwstringでマップを作成しましたが、私はマップのデータを表示するためのイテレータを実行しようとしたとき、それは私が最初に追加のデータをスキップします。ここにコードがあります。データの格納が
typedef struct
{
public:
wstring source;
wstring synthetic;
int operation;
int divisor;
}SSParams;
map<wstring, SSParams>SSParameters;
for(int x=0;x<sizeofdata;x++)
{
SSParameters[srcsymbol[x]].source = srcsymbol[x];
SSParameters[srcsymbol[x]].synthetic = synsymbol[x];
SSParameters[srcsymbol[x]].operation = operation[x];
SSParameters[srcsymbol[x]].divisor = divisor[x];
m_api->LoggerOut(Log, L"Source: %s Synth: %s, Operation: %d, Value: %d, Total: %d", SSParameters[srcsymbol].source, SSParameters[srcsymbol].synthetic, SSParameters[srcsymbol].operation, SSParameters[srcsymbol].divisor,SSParameters.size());
}
map<wstring, SSParams>::iterator iter;
for (iter = SSParameters.begin(); iter != SSParameters.end(); ++iter)
{
m_api->LoggerOut(Log, L"Data Source: %s, Synth: %s, Operation: %d, Divisor: %d", iter->second.source, iter->second.synthetic, iter->second.operation, iter->second.divisor);
}
出力(挿入ループ):
Source: HCBC Synth: HCBCx, Operation:1, Value: 100, Total: 1
Source: HCBC Synth: HCBCv, Operation:1, Value: 100, Total: 1
出力(イテレータループ):
Data Source: HCBC Synth: HCBCv, Operation:1, Value: 100
あなたが見ることができるように、私は値を追加だけでなく、使用したマップのキーforループとログは、データを正常に追加したことを示していますが、イテレータを実行しようとすると、データは表示されますが、最初のデータはスキップされます。 srcsymbol
以来
これを読んでみると、そのような場合には本当に役立ちます。https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – alexeykuzmin0
入力例、予想出力、実際の出力。 –
変数 "srcsymbol"は変更されていないので、マップには1つの要素しか追加されていないと思います。 –