我有以下代碼:boost :: transform()只有當被添加的值不是NULL時?
// For each trigger model (_1) (which is just a CString), do:
// m_triggers.push_back(triggers.GetTrigger(static_cast<char const*>(_1)))
boost::transform(
model.Triggers(),
std::back_inserter(m_triggers),
phx::bind(&CTriggerController::GetTrigger, phx::ref(triggers),
phx::static_cast_<char const*>(_1)));
m_triggers
是觸發對象的指針的矢量:
std::vector<CTrigger*> m_triggers;
如果空(這意味着該名稱的觸發可以發現到CTriggerController::GetTrigger()
返回呼叫),我不想推動任何東西到我的m_triggers
載體。
有沒有一個簡單的方法來做到這一點,通過對我的代碼進行一些小修改?
我使用升壓1.55.0上MSVC9(C++ 03只)
if語句,只需使用一個檢查的價值,如果它不爲空,推到載體。 – OMGtechy
我一直希望有幾次'transform_if',但是在大多數情況下,事實證明,儘早排除邊緣案例會更好。在你的情況下,爲什麼觸發器不在'GetTrigger'中可以接受?看起來這應該是你的系統的不變性,但我可能是錯的。 – pmr
我可以創建自己的'back_inserter_if',但我不確定這是一個優雅的解決方案,因爲我將散佈謂詞邏輯遍佈整個地方。 –