std::find on a vector of object pointers

前端 未结 3 1686
旧时难觅i
旧时难觅i 2021-01-24 14:48

I have a class A with a member which is a vector of object pointers of another class B

class A
{
    std::vector m_member_A
<         


        
3条回答
  •  天命终不由人
    2021-01-24 15:34

    Vector works perfectly fine with std::find

    auto result = std::find(m_member_A.begin(), m_member_A.end(), itemToFind);
    if (result != m_member_A.end()) {
      // found it!
    }
    

    Or if you need to dereference the pointer:

    auto result = std::find_if(m_member_A.begin(), m_member_A.end(), 
      [] (B* item) { 
        if (item == nullptr) return false; // may want to do something else here
        return *item == someValue;
      });
    if (result != m_member_A.end()) {
      // found it!
    }
    

    Demo: http://ideone.com/jKCrG5

提交回复
热议问题