【问题标题】:C++ What does size_t(iterator1 - iterator2) mean? [duplicate]C++ size_t(iterator1 - iterator2) 是什么意思? [复制]
【发布时间】:2019-07-06 12:53:42
【问题描述】:

iterator1iterator2 是结构体的两个指针。

我知道size_t(iterator1 - iterator2) 是为了获取长度。但是我们怎么能像那样使用size_t呢?是不是类似于(size_t)(iterator1 - iterator2)这样的强制类型转换?

【问题讨论】:

  • 虽然使用szie_t 来获得差异并没有多大意义,因为您可能会产生负面差异

标签: c++


【解决方案1】:

您的语法只是根据表达式iterator1 - iterator2 的值创建size_t 的指令。

size_t 不是最好的类型(因为它是unsigned),而且该方法也不是最好的方法。

假设iterator1iterator2 是同一个容器上的迭代器(否则我呈现的和你拥有的行为是不确定的),

auto diff = std::distance(iterator1, iterator2);

是首选。

【讨论】:

  • 我相当怀疑您将结果转换为 size_t 这样的唯一原因是,如果您需要将结果设为 size_t,这将使其成为最佳类型。尽管进行一些测试以确保数据没有损坏是合适的。
猜你喜欢
  • 2011-06-21
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 2015-01-22
  • 2015-06-25
  • 2013-02-12
相关资源
最近更新 更多