【问题标题】:Copy the address of all elements using std::copy使用 std::copy 复制所有元素的地址
【发布时间】:2014-08-11 11:43:03
【问题描述】:

我正在尝试获取给定集合的所有元素的地址并将它们复制到 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 间接迭代器所做的相反。 有没有标准的方法来做到这一点?非常感谢。

【问题讨论】:

    标签: c++ boost iterator std


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多