gpt4 book ai didi

c++ - 在 tr1::shared_ptr 的 vector 中查找元素

转载 作者:太空狗 更新时间:2023-10-29 23:46:02 25 4
gpt4 key购买 nike

我已经将我的自定义类型“MyType”包装在一个智能指针中:

tr1::shared_ptr<MyType>

并从中制作了一个 vector :

vector<shared_ptr<MyType>>

现在我要std::find MyType 类型的对象在那个 vector 中,但不能,因为我需要的类型是 shared_ptr<MyType> .

有什么优雅的方法吗?谢谢

更新:为什么不是 std::find_if:std::find 的用法非常紧凑。我认为为 find_if 实现一个方法或仿函数的开销太大。

最佳答案

做你想做的事情的惯用和优雅的方式是:

std::vector<std::shared_ptr<MyType>> v;

// init v here;

MyType my_value;

// init my_value here;

auto it = std::find_if(v.begin(), v.end(), [&](std::shared_ptr<MyType> const& p) {
return *p == my_value; // assumes MyType has operator==
});

if (it != v.end()) { /* do what you want with the value found */ }

如果您可以使用 std::vectorstd:shared_ptr,那么您显然已经在使用 STL。那么为什么不使用 std::find_if 呢?如果您不能使用 C++11 lambda 表达式,您始终可以使用函数对象。

关于c++ - 在 tr1::shared_ptr 的 vector 中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14253132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com