Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何理解C++;_C++ - Fatal编程技术网

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
尽职尽责地减去指针并告诉您


<> >技巧是距离>代码>是应用于同一个容器的迭代器。你的代码不符合这个承诺。编译器可以随意放置<代码> B<代码> >代码> C >代码>数组,无论你喜欢哪里,结果都是没有意义的。就像C++中的很多东西一样,你可以确保你是。正确地使用距离。如果你不这样做,你将得到未定义的行为,语言无法保证会发生什么。

std::distance(\uuu first,\uu last)
用于泛化指针算法,它返回一个值
n
,这样
\uuuu first+n=\uu last

对于您的情况,参数是
int*
的指针,就迭代而言,它们是随机访问的迭代器。实现只返回一个值
\uu last-\uu first

<代码>(int*)C-(int*)B

这是未定义的行为。
距离
适用于单个容器的迭代器。未定义的行为。没有可靠的解释。可能您对
std::distance
有错误的理解?从用法来看,我猜错误的理解是它会计算点与点之间的欧几里德距离还有一个问题,有没有办法表明它是未定义的行为?你看一下文档。