我正在尝试获取给定集合的所有元素的地址,并将它们复制到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的作用相反。 有没有标准的方法呢?非常感谢。
答案 0 :(得分:10)
使用std::transform
进行修改后复制。
std::transform(first1, last1, std::inserter(s1, s1.begin()),
std::addressof<T>);