C++ 如何理解C++;
代码如下:C++ 如何理解C++;,c++,C++,代码如下: int B[] = {3,5}; int C[] = {4,5}; cout << distance(B,C); intb[]={3,5}; int C[]={4,5}; coutdistance(first,last)函数告诉您迭代器在first和last之间有多少项。注意,指针是迭代器,随机访问迭代器是特定的。因此,一个指针和另一个指针之间的距离就是它们之间的差异,由操作符-定义 所以你的问题归结为“在B指向的int和C指向的int之间有多少int distance
int B[] = {3,5};
int C[] = {4,5};
cout << distance(B,C);
intb[]={3,5};
int C[]={4,5};
coutdistance(first,last)
函数告诉您迭代器在first
和last
之间有多少项。注意,指针是迭代器,随机访问迭代器是特定的。因此,一个指针和另一个指针之间的距离就是它们之间的差异,由操作符-
定义
所以你的问题归结为“在B
指向的int
和C
指向的int
之间有多少int
distance
尽职尽责地减去指针并告诉您
<> >技巧是
std::distance(\uuu first,\uu last)
用于泛化指针算法,它返回一个值n
,这样\uuuu first+n=\uu last
对于您的情况,参数是
int*
的指针,就迭代而言,它们是随机访问的迭代器。实现只返回一个值\uu last-\uu first
:<代码>(int*)C-(int*)B
这是未定义的行为。
距离
适用于单个容器的迭代器。未定义的行为。没有可靠的解释。可能您对std::distance
有错误的理解?从用法来看,我猜错误的理解是它会计算点与点之间的欧几里德距离还有一个问题,有没有办法表明它是未定义的行为?你看一下文档。