std::map
のファンクタのstd::pair
の値のコピーを避ける方法はありますか(私はそれが何であるか推測しています)。でも、C++ 11の両方のケースでは、ラムダfind_ifとmapのファンクタ
auto it = std::find_if(mRTMap.begin(), mRTMap.end(),
[](const std::pair<guid, RadioTransmitterInformation> &t) -> bool {
return t.second.mPropagationServer.mRequestNumber == 24031;
}
);
と
struct request_number_find
{
request_number_find(const unsigned __int64 &baseline) : _baseline(baseline) {}
bool operator() (const std::pair<guid, RadioTransmitterInformation> &arg)
//-------------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
{
return _baseline == arg.second.mPropagationServer.mRequestNumber;
}
unsigned __int64 _baseline;
};
、私は常に値を検索しながらRadioTransmitterInformation
のデストラクタがコールを複数回取得を参照してください。
地図宣言:
std::map<guid, RadioTransmitterInformation, guid_compare> mRTMap;
guid_compare:
struct guid_compare {
bool operator() (const guid& lhs, const guid& rhs) const{
return lhs < rhs;
}
};
Find_ifコール:
std::find_if(mRTMap.begin(), mRTMap.end(), request_number_find(24031));
おかげ
'decltype'バージョンはどうですか?マップは実際に 'map'ですか?あなたは[mcve]を投稿しなかったので、私は確信できません。 –
まあまあ、私は大きな間違いを犯しました。あなたの答えは私の問題を解決しました。どうもありがとう! – Ceros