簡體   English   中英

查找並返回指向向量中對象的指針

[英]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

另外,建議進行一些更改。

  1. 使getProfile為常量方法。 它不會(也不應該)修改任何東西
    不斷地重載getProfile是個好主意,但您也要保持可變。

  2. 將lambda參數設為常數參考(const Profile &p) 如果進行上述更改,這也是必要的。

  3. 您不需要按值捕獲name 通過引用捕獲它可以節省復制。 [&name]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM