Data语意学01

本文探讨了C++中对象模型的内存布局,特别是nonstaticDataMember和staticDataMember的区别,通过实例TestSize0、TestSize1、TestSize2和TestSize3展示类的大小计算。重点讲解了空类、虚继承、public继承对内存占用的影响。

C++对象模型,尽量以空间优化和存取速度的优化来表现nonstatic Data Member,他把数据直接存放在一个class中,对于继承来的也是如此。

对于static Data Member, 则被放置在一个程序的global data segment中,不影响class的大小,无论创造了多少个该类的对象,这个static Data Member只有一个,即使对象不存在,这个数据也存在

1.先来看四个类

class TestSize0
{

};


class TestSize1 : public virtual TestSize0
{

};


class TestSize2 : public virtual TestSize0
{

};


class TestSize3 : public  TestSize1, public TestSize0
{

};

2.那么大家认为这四个类的大小分别是多少呢

     cout << sizeof(TestSize0) << endl;

     cout << sizeof(TestSize1) << endl;

     cout << sizeof(TestSize2) << endl;

     cout << sizeof(TestSize3) << endl;

在这里插入图片描述

3.为什么第一个类size0里面什么都没有,为什么大小是1呢?

空类有一个隐藏的Byte,那是被编译器安插进去的一个char,使得这一个class的两个objects得以在内存中配置独一无二的地址

4.size1和size2虚继承了size0,那么他们内部就会有一个虚基类指针,指向一个虚基类表

在32位环境下,就是4个字节

5.size3 是public继承了 size2 和 size1, 所以是八个字节

6.一个虚基类只会在其派生类中存在一份实例,不论他在class的继承体系中被继承了多少次

### 高光谱影像(HSI)与激光雷达(LiDAR)在语义分割及遥感中的对比 #### 数据特性差异 高光谱影像(HSI)能够捕捉到数百个连续波段的光谱信息,这使得其非常适合于区分具有细微光谱特征的地物类别[^1]。相比之下,LiDAR主要依赖三维空间数据采集技术,通过测量反射信号的时间差获取精确的高度和距离信息。因此,在地形复杂度较高的区域,如森林覆盖区或城市建筑密集区,LiDAR的数据优势尤为明显。 #### 应用场景分析 - **植被监测** HSI因其丰富的光谱分辨率可以有效识别植物种类及其健康状况,这对于农业管理和生态研究至关重要。而LiDAR则擅长描绘植被冠层结构以及估算生物量密度,两者结合可实现更全面的植被评估[^2]。 - **建筑物提取** LiDAR生成的数字表面模型(DSM)能清晰展示建筑物顶部细节,即使是在阴影遮挡条件下也能保持较高精度。然而,对于屋顶材质分类等问题,则可能需要引入HSI补充纹理与颜色线索[^3]。 - **水体探测** 利用水体吸收特定波长光线这一原理,HSI可以在混浊水域中分辨不同类型沉积物;与此同时,浅滩地区利用LiDAR穿透能力同样可以获得底部地貌信息。 #### 技术局限性探讨 尽管两种传感器各自具备独特的优势,但也存在一定的局限之处。例如,HSI受大气条件影响较大,云雾天气下难以获得高质量图像;另外由于波段数量众多造成计算负担加重也是不可忽视的问题。至于LiDAR方面,虽然不受光照变化干扰,但是成本高昂且设备体积庞大限制了大规模部署可能性。 ```python import numpy as np from sklearn.decomposition import PCA def hsi_pca_reduction(hsi_data, n_components=50): pca = PCA(n_components=n_components) reduced_hsi = pca.fit_transform(hsi_data.reshape(-1,hsi_data.shape[-1])) return reduced_hsi.reshape((*hsi_data.shape[:-1],n_components)) # Example usage of reducing dimensionality in hyperspectral data before semantic segmentation tasks. reduced_data = hsi_pca_reduction(np.random.rand(100,100,200)) print(reduced_data.shape) ``` 上述代码展示了如何运用主成分分析方法降低高维数的超光谱数据维度至更适合后续处理的状态。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值