2013-10-17 49 views
1

我明白在std::string的载体上使用boost::algorithm::join,但是如何将其用于std::vector<std::unique_ptr<Foo>>如何使用boost :: algorithm :: join与std :: vector的对象?

我想我正在寻找某种应用函数,我可以传入一个lambda,所以我可以将std :: unique_ptr转换为std :: string。

+0

你的'Foo'上的'join()'的语义是什么? – TemplateRex

+1

我想说你需要用伪迭代器构建一个伪容器来作为'boost :: algorithm :: join'的第一个参数传递。就我个人而言,我认为这是不值得的努力的可怕的样板代码。 “先串联再加入”很可能是更易于阅读的方式。 – stefan

回答

1

看起来是source codejoin,似乎没有办法做到这一点。返回值必须是range_value<SequenceSequenceT>::type类型,在您的情况下映射到std::unique_ptr<Foo>。你可以std::transform你的vectorstd::vector<std::string>,这有点浪费。或者,你可以实现你自己的连接版本,它可以在转换时应用转换本身。

+1

搜索时遇到过http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3594.html。建议将其添加到std。 – Raja

+0

@Raja伟大的联系 - ty – kfmfe04

相关问题