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

LeC*_*Coc 4 c++ boost iterator std

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

std::set<T> s1;
std::copy(first1, last1, std::inserter(s1, s1.begin()));
Run Code Online (Sandbox Code Playgroud)

我想插入他们的地址.就像是:

std::set<std::add_pointer<T>> s1;
std::copy(reference_iterator(first1), reference_iterator(last1), 
    std::inserter(s1, s1.begin()));
Run Code Online (Sandbox Code Playgroud)

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

Bri*_*ian 10

使用std::transform与修改复制.

std::transform(first1, last1, std::inserter(s1, s1.begin()),
               std::addressof<T>);
Run Code Online (Sandbox Code Playgroud)