【发布时间】:2017-12-12 21:31:10
【问题描述】:
我想为类的用户提供迭代成员容器的可能性,但对元素应用了转换。 Boost 适配器似乎非常适合转换容器,但我不知道如何将它应用到我的用例中。
该函数返回一个包装了开始和结束迭代器的 IterPair 模板,它无需转换即可工作。但是,通过转换,我返回了一对局部变量的迭代器。 使转换后的容器成为成员是不可能的,因为它没有默认构造函数。
class A
{
public:
IterPair get_elems()
{
auto tr_vect = vect_ | boost::adaptors::transformed(std::mem_fn(&std::string::c_str));
return {std::begin(tr_vect), std::end(tr_vect)};
}
private:
std::vector<std::string> vect_;
}
【问题讨论】: