gpt4 book ai didi

c++ - 从函数应用创建 std::vector

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

给定一个 vector v1对象,以及对它们进行操作并返回值的函数,

std::vector<OBJ> v1; // already filled
bool foo(const OBJ&);

创建 vector<bool> v2 的最干净的方法是什么? , 来自 foo 的应用v1 的每个元素?我宁愿不写循环,但我在 STL 中找不到合适的命令。

最佳答案

听起来像是 std::transform 的工作。

当然有循环,不过是transform的一个实现细节。

例子:

#include <vector>
#include <algorithm>

template<typename Obj, typename IsTrue>
std::vector<bool> truth(std::vector<Obj> const& v, IsTrue&& truth_func)
{
auto result = std::vector<bool>(v.size());
std::transform(std::begin(v), std::end(v),
std::begin(result),
std::forward<IsTrue>(truth_func));
return result;
}


int main()
{
std::vector<int> v { 1, 2, 3, 4, 5 };

auto is_even = [](auto&& x)
{
return (x % 2) == 0;
};

auto vb = truth(v, is_even);
}

关于c++ - 从函数应用创建 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50303765/

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