struct segment{
int _gcd;
int _count;
segment(){
_gcd=0;
_count=0;
}
segment(int val)
{
_gcd=val;
_count=1;
}
void mergee(segment left,segment right)
{
_count=0;
_gcd=gcd(left._gcd,right._gcd);
if(_gcd==left._gcd)
{
_count+=left._count;
}
if(_gcd==right._gcd)
{
_count+=right._count;
}
}
}seg[4*N];
我在CodeForces中寻求解决蚁群问题的方法,偶然发现https://w84iit.wordpress.com/2017/06/20/ant-colony-solutioncodeforces/。最令我困惑的是这struct
部分。那是结构内部的功能声明吗?我还看到struct
中也有函数重载。我对struct
内部的函数不太熟悉,因为Google搜索还显示将struct
传递给外部函数更为常见。结构函数如何工作?他们只能修改struct
内部声明的变量吗?我可以退货吗?上面的示例仅使用struct
中的函数来修改其变量值。
答案 0 :(得分:7)
在C ++中,C的struct
被概括为一个类。
实际上,struct
和class
之间的唯一区别是数据成员的默认访问权限和继承。
是的,struct
可以包含功能,就像class
可以一样。
答案 1 :(得分:2)
该类内部的函数称为非静态成员函数。
它具有一个隐含的对象参数,可通过this
访问。
调用时,对象参数位于类成员访问权限的.
的左侧:
struct x {
int data_member;
int f(int i){
return data_member+i;
}
};
x y;
y.f(10);
等同于:
struct x {
int data_member;
};
int f(x* _this, int i) {
return _this->data_member + i;
}
x y;
f(&y,10);