簡體   English   中英

std :: find_if映射到對象

[英]std::find_if map to object

對於find_if到object的地圖指針,我應該使用示例1還是示例2,哪個最好?

struct test {
 INT id
}

std::vector<std::shared_ptr<test>> vec;

int ID = 75;

auto obj = std::find_if(vec.begin(), vec.end(), [&ID](std::shared_ptr<test>& r){
 return r->id == ID;
});

if ( obj != vec.end() ) {
 // example 1
 std::shared_ptr<test> example1 = (*obj);

 // example 2 by reference
 std::shared_ptr<test>& example2 = (*obj);
}

如果您不會在對find_if的調用和shared_ptr的用法之間修改vec ,那么請像example2那樣對元素進行引用,以避免對引用計數進行不必要的調整。 如果不能確定是否確實如此, shared_ptr值復制shared_ptrexample

暫無
暫無

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

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