小编Mat*_*her的帖子

在C++ 11中向向量添加map函数

我有一个自定义矢量类,所有意图和目的就像std :: vector一样.我想添加一个简单的地图功能:

template <class T> class Vector
{
public:
    template<class mapFunction> Vector<typename mapFunction::result_type> map(mapFunction function)
    {
        Vector<mapFunction::result_type> result(_Length);
        for(UINT i = 0; i < _Length; i++)
        {
           result[i] = function(_Data[i]);
        }
        return result;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

用法:

Vector<int> v(5);
for(int i = 0; i < 5; i++) v[i] = i;
auto mappedVector = v.map(function<double(int)>([](int a) { return a * 2.0; }));
Run Code Online (Sandbox Code Playgroud)

这有效,但我试图避免从lambda表达式转换为需要std::function.理想情况下,也只是v.map([](int a) { return a * 2.0; })); 我知道我大概可以写一个"make_function"类似"make_pair",以避免模板参数的需要,但你仍然需要转换所有的lambda表达式.

我把它转换为a std::function因为我不知道如何从原始lambda类型中提取返回类型; 因此我正在使用std::function::result_type. …

c++ c++11

4
推荐指数
1
解决办法
904
查看次数

标签 统计

c++ ×1

c++11 ×1