gpt4 book ai didi

c++ - 在 shared_ptr 的容器上使用 C++ std::equal

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:49 25 4
gpt4 key购买 nike

我有一个 std::shared_ptr 的容器。我想使用 std::equal 比较两个容器。类 A 定义了 operator== 。我想使用其运算符 == 比较每个元素是否等效,而不是 shared_ptr 中定义的那个。

我是否需要让一个函数或函数对象传递给 equal?或者是否有一些内置的东西会更简单(比如 中定义的东西)?

最佳答案

您将需要一个函数或一个函数对象或一个 lambda 表达式(因为您可以使用 std::shared_ptr ,所以您已经启用了 C++0x 的某些部分)。

<functional> 中没有任何内容帮助你,但有一些东西在提升:indirect iterator

#include <iostream>
#include <vector>
#include <algorithm>
#include <memory>
#include <boost/iterator/indirect_iterator.hpp>
int main()
{
std::vector<std::shared_ptr<int>> v1;
std::vector<std::shared_ptr<int>> v2;
v1.emplace_back( new int(1) );
v2.emplace_back( new int(1) );

bool result =
std::equal( boost::make_indirect_iterator(v1.begin()),
boost::make_indirect_iterator(v1.end()),
boost::make_indirect_iterator(v2.begin()));
std::cout << std::boolalpha << result << '\n';
}

关于c++ - 在 shared_ptr 的容器上使用 C++ std::equal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504774/

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