小编sig*_*agi的帖子

另一种复制算法

我有两个向量.

vector<Object> objects;
vector<string> names;
Run Code Online (Sandbox Code Playgroud)

填充这两个向量并具有相同的大小.我需要一些算法来分配对象变量.它可以使用boost :: lambda.让我们说:

some_algoritm(objects.begin(), objects.end(), names.begin(), bind(&Object::Name, _1) = _2);
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

c++ boost stl boost-lambda

9
推荐指数
2
解决办法
547
查看次数

Perl中的函数组合

在Perl 5中,我们可以应用函数式编程技术(使用闭包,高阶函数,如map,grep等).但功能构成怎么样?让我们说,在Haskell中,可以使用(.)函数很容易地完成它:

map (negate . abs) [-3, 2, 4, -1, 5]
Run Code Online (Sandbox Code Playgroud)

在Perl中,这个"点函数"的等价物是什么?

perl functional-programming

8
推荐指数
4
解决办法
917
查看次数

在STL算法中调用多个函数

使用STL算法的经典示例:

void foo(int){};
vector<int> collection;
collection.push_back(3);
collection.push_back(4);
... etc.

std::for_each(collection.begin(), collection.end(), bind(foo, _1));
Run Code Online (Sandbox Code Playgroud)

但是,如果我们有多个函数,需要使用相同的参数值调用,该怎么办:

void bar(int){};
void beer(int){};
... etc.
Run Code Online (Sandbox Code Playgroud)

每次使用不同的函数重复for_each算法都不是选项.我需要更优雅的解决方案.

c++ boost c++11

1
推荐指数
2
解决办法
138
查看次数

按照状态排列向量中的元素

我们有简化的课程:

class A
{
   bool val_;
   public:
     A() : val_(true) {}
     bool isNew() const { return val_; }
     void setDirty() { val_ = false; }
};
Run Code Online (Sandbox Code Playgroud)

以及这类对象的向量:

vector<A> coll;
coll.push_back(A());
coll.push_back(A());
coll.push_back(A());
coll.push_back(A());
coll[1].setDirty();
coll[3].setDirty();
Run Code Online (Sandbox Code Playgroud)

我需要一些优雅的解决方案来重新排列(排序)向量中的元素,以便未修改的对象将在序列的开头分组.

c++ boost

0
推荐指数
1
解决办法
92
查看次数

标签 统计

boost ×3

c++ ×3

boost-lambda ×1

c++11 ×1

functional-programming ×1

perl ×1

stl ×1