相关疑难解决方法(0)

STL算法的可组合性

STL算法在C++中非常有用.但有一点令我烦恼的是,他们似乎缺乏可组合性.

例如,假设我有一个vector<pair<int, int>>并且想要将其转换为vector<int>仅包含second该对的成员.这很简单:

std::vector<std::pair<int, int>> values = GetValues();
std::vector<int> result;

std::transform(values.begin(), values.end(), std::back_inserter(result),
    [] (std::pair<int, int> p) { return p.second; });
Run Code Online (Sandbox Code Playgroud)

或者我想过滤vector那些first成员是偶数的对.也很简单:

std::vector<std::pair<int, int>> values = GetValues();
std::vector<std::pair<int, int>> result;

std::copy_if(values.begin(), values.end(), std::back_inserter(result),
    [] (std::pair<int, int> p) { return (p.first % 2) == 0; });
Run Code Online (Sandbox Code Playgroud)

但如果我想同时做两件事呢?没有transform_if算法,并且使用两者transform并且copy_if似乎需要分配临时vector来保存中间结果:

std::vector<std::pair<int, int>> values = GetValues();
std::vector<std::pair<int, int>> temp;
std::vector<int> result;

std::copy_if(values.begin(), values.end(), std::back_inserter(temp),
    [] (std::pair<int, int> …
Run Code Online (Sandbox Code Playgroud)

c++ stl stl-algorithm

38
推荐指数
4
解决办法
3589
查看次数

标签 统计

c++ ×1

stl ×1

stl-algorithm ×1