[英]find and return a pointer to a object in a vector
C ++的新手,不太確定我要去哪里。 仍然把我的頭纏在ptrs上。
我有一個配置文件對象向量。 我想根據其屬性之一找到一個特定的對象。 然后我想返回那個對象。 我不想復制或復制任何對象,所以我想我需要返回一個指向特定對象的指針?
這是我的代碼:
Profile* profileManager::getProfile(const std::string& name)
{
std::vector<Profile>::iterator it = std::find_if(allProfiles.begin(), allProfiles.end(), [name](Profile &p) { return p.getName() == name; });
return it != allProfiles.end() ? *it : nullptr;
}
有一些我不知道如何解決的錯誤。 如果找不到匹配項,我想返回null並讓調用者處理它,我該怎么做? 目前,我得到了一個不兼容的類型,我試圖將返回值更改一些,但是沒有運氣。 它還說這不是正確的類型。 如果找到配置文件,如何獲取它以返回指向配置文件的指針?
任何幫助/建議表示贊賞。 謝謝。
return it != allProfiles.end() ? *it : nullptr;
這幾乎可以滿足您的需求。 *it
的類型是Profile
。 要獲取指向它的指針,只需獲取地址: &*it
另外,建議進行一些更改。
使 getProfile
為常量方法。它不會(也不應該)修改任何東西 。
不斷地重載getProfile
是個好主意,但您也要保持可變。
將lambda參數設為常數參考(const Profile &p)
。 如果進行上述更改,這也是必要的。
name
。 通過引用捕獲它可以節省復制。 [&name]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.