【问题标题】:pointer from random access iterator来自随机访问迭代器的指针
【发布时间】:2021-03-02 16:19:20
【问题描述】:

我有一个随机访问迭代器,我需要把它变成一个指针(外部 API 需要它!)。我可以做T* ptr = &(*iter);,但我觉得它很丑。有没有更好的办法?所有随机访问迭代器通常都实现-> 运算符,但我不知道获取数据指针的通用方法。

【问题讨论】:

  • 这个“丑陋”会阻止它正确吗?
  • 您可以显式调用箭头运算符,但我不确定它是否更好:godbolt.org/z/heEdh5
  • 可以去掉括号;不知道你是不是觉得不那么丑了。
  • @TanveerBadar 代码可能正确且无法维护。两者并不排斥。
  • @Touloudou 我没觉得丑。

标签: c++ iterator


【解决方案1】:

如果你可以使用 C++20,那就是std::to_address。示例:

std::vector<int> v{1, 2, 3};

int *ptr = std::to_address(v.begin());

【讨论】:

    猜你喜欢
    • 2012-08-19
    • 2020-04-23
    • 2020-09-12
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    相关资源
    最近更新 更多