是否存在标准算法的标准/事实标准(boost)包装器,它们与定义开始和结束的容器一起使用。让我告诉你我对代码的意思:
// instead of specifying begin and end
std::copy(vector.begin(), vector.end(), output);
// write as
xxx::copy(vector, output);
我知道它可以很容易地写出来,但我正在寻找一种无处不在的东西。 感谢。
答案 0 :(得分:8)
Boost Range库有一个名为RangeEx的扩展,它包含所有stl算法的范围包装器,以及一些新算法。
最近被Boost接受了,所以它还没有出现在当前的“官方”版本中(1.41)。在此更改之前,您可以从Boost Vault download the latest version进行更改。
不知道这是否会成为C ++标准的一部分,但它在Boost中的事实意味着它将成为事实上的标准。
答案 1 :(得分:2)
下一个标准(希望!)修改这个。在此期间,请查看Boost.Range及其各种用途,尽管我不知道标准算法的接口。
答案 2 :(得分:1)
我见过这种情况的唯一情况是那些基于boost::range
库的算法,但即使这些算法也没有实际修改标准算法,如std::copy
或std::remove_if
- - 需要编写有问题的算法以利用这样的范围包装器。
有关示例,请参阅Boost String Algorithms库。
答案 3 :(得分:0)
我将添加自己的发现:Adobe源库(来自boost取代算法部分的rangex) ASL