gpt4 book ai didi

c++ - 如何理解 C++ 中的 std::distance?

转载 作者:可可西里 更新时间:2023-11-01 17:00:48 28 4
gpt4 key购买 nike

代码如下:

int B[] = {3,5};
int C[] = {4,5};
cout << distance(B,C);

输出是:

-4

谁能解释一下这是为什么?

最佳答案

distance(first, last)函数告诉您 first 处的迭代器之间有多少项和 last .请注意,指针是迭代器,具体来说是随机访问迭代器。因此,一个指针与另一个指针之间的距离就是它们之间的差异,由 operator- 定义。 .

所以您的问题归结为“ints 指向的 intB 指向的 int 之间有多少个 C

distance尽职尽责地减去指针并告诉你。

诀窍在于 distance应该应用于来自同一容器的迭代器。您的代码不符合该 promise 。编译器可以自由放置 BC数组随心所欲,因此您看到的结果毫无意义。与 C++ 中的许多事情一样,确保您使用的是 distance 取决于您。适本地。如果不这样做,您将得到未定义的行为,语言无法保证会发生什么。

关于c++ - 如何理解 C++ 中的 std::distance?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26292652/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com