C++中类模板或函数模板的使用问题:我在研究一段代码,可看不懂函数模板中 (*(start+j)).x什么意思?
template<classForwardIterator>就是下面这段代码:中的(*(start+j)).x是什么用法啊?请高手指教doubleGetDistance(...
template<class ForwardIterator>
就是下面这段代码:中的 (*(start+j)).x是什么用法啊?请高手指教
double GetDistance(const ForwardIterator start, int i, int j)
{
return ::sqrt(::pow(((*(start+i)).x - (*(start+j)).x), 2) + ::pow(((*(start+i)).y - (*(start+j)).y), 2));
} 展开
就是下面这段代码:中的 (*(start+j)).x是什么用法啊?请高手指教
double GetDistance(const ForwardIterator start, int i, int j)
{
return ::sqrt(::pow(((*(start+i)).x - (*(start+j)).x), 2) + ::pow(((*(start+i)).y - (*(start+j)).y), 2));
} 展开
3个回答
展开全部
按所给的信息,得到以下结果:
有一个容器(数组或链表)保存了一系列点的信息。
这个容器有一个迭代器ForwardIterator
start表示这个迭代器的起始位置。
i表示第i个元素,j表示第j个元素。
(start+i)表示指向容器中第i个元素
*(start+i)就取得容器中第i个元素。
从上面代码看,取得的元素应该是一个类或一个结构体,里边有坐标(x,y)的信息。
因此(*(start+i)).x就得到这个元素的x坐标。
有一个容器(数组或链表)保存了一系列点的信息。
这个容器有一个迭代器ForwardIterator
start表示这个迭代器的起始位置。
i表示第i个元素,j表示第j个元素。
(start+i)表示指向容器中第i个元素
*(start+i)就取得容器中第i个元素。
从上面代码看,取得的元素应该是一个类或一个结构体,里边有坐标(x,y)的信息。
因此(*(start+i)).x就得到这个元素的x坐标。
追问
您好,请问:template 中的模板参数类型可以是任意类型的,它包括自己定义的结构或类的数据类型吗?
追答
可以,模板的意思就是可以用类型去替换。
展开全部
(*(start+j))应该是是一个已经定义声明结构体或者类,“.”运算符代表调用成员函数或者成员。
(*(start+j))中start+j是一个地址,*是解引用运算符,模糊点说就是把存在start+j地址中的一个类或者结构体取出来
(*(start+j))中start+j是一个地址,*是解引用运算符,模糊点说就是把存在start+j地址中的一个类或者结构体取出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很明显的.
start是一个指向一个包含有x,y这两个数据的结构体的模板指针.
(start+j)就是指针便宜j个单位.
*(start+j)自然就是指取出这个指针位置的值.*也是指针取值运算符
(*(start+j)).x就是取这个结构体中的x值出来了.
等同于(start+j)->x
start是一个指向一个包含有x,y这两个数据的结构体的模板指针.
(start+j)就是指针便宜j个单位.
*(start+j)自然就是指取出这个指针位置的值.*也是指针取值运算符
(*(start+j)).x就是取这个结构体中的x值出来了.
等同于(start+j)->x
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询