使用std :: copy复制所有元素的地址

时间:2014-06-20 16:39:30

标签: c++ boost iterator std

我正在尝试获取给定集合的所有元素的地址,并将它们复制到std :: set。基本上,而不是

std::set<T> s1;
std::copy(first1, last1, std::inserter(s1, s1.begin()));

我想插入他们的地址。类似的东西:

std::set<std::add_pointer<T>> s1;
std::copy(reference_iterator(first1), reference_iterator(last1), 
    std::inserter(s1, s1.begin()));

这里,reference_iterator将是一个迭代器,它返回其元素的地址而不是元素,这与boost indirect_iterator的作用相反。 有没有标准的方法呢?非常感谢。

1 个答案:

答案 0 :(得分:10)

使用std::transform进行修改后复制。

std::transform(first1, last1, std::inserter(s1, s1.begin()),
               std::addressof<T>);