我明白在std::string
的载体上使用boost::algorithm::join
,但是如何将其用于std::vector<std::unique_ptr<Foo>>
?如何使用boost :: algorithm :: join与std :: vector的对象?
我想我正在寻找某种应用函数,我可以传入一个lambda,所以我可以将std :: unique_ptr转换为std :: string。
我明白在std::string
的载体上使用boost::algorithm::join
,但是如何将其用于std::vector<std::unique_ptr<Foo>>
?如何使用boost :: algorithm :: join与std :: vector的对象?
我想我正在寻找某种应用函数,我可以传入一个lambda,所以我可以将std :: unique_ptr转换为std :: string。
看起来是source code的join
,似乎没有办法做到这一点。返回值必须是range_value<SequenceSequenceT>::type
类型,在您的情况下映射到std::unique_ptr<Foo>
。你可以std::transform
你的vector
到std::vector<std::string>
,这有点浪费。或者,你可以实现你自己的连接版本,它可以在转换时应用转换本身。
你的'Foo'上的'join()'的语义是什么? – TemplateRex
我想说你需要用伪迭代器构建一个伪容器来作为'boost :: algorithm :: join'的第一个参数传递。就我个人而言,我认为这是不值得的努力的可怕的样板代码。 “先串联再加入”很可能是更易于阅读的方式。 – stefan