将矢量模拟为2D阵列
simulate vectors as 2D arrays
我知道我们不能有多维向量。但我想把向量的单元格定义为指针,这样就可以模拟二维向量。这是代码:
const char* filename = "D:\desktop\IP_ABAD\images\1.png";
GDALDataset *poDataset = NULL ;
GDALAllRegister();
poDataset = (GDALDataset *) GDALOpen( filename, GA_ReadOnly );
const int RasterXSize = poDataset -> GetRasterXSize();
const int RasterYSize = poDataset -> GetRasterYSize();
const int RasterCount = poDataset -> GetRasterCount();
CPLErr error = CE_None;
GDALRasterBand *poRasterBand;
poRasterBand = poDataset -> GetRasterBand(1);
GDALDataType eType;
eType = poRasterBand -> GetRasterDataType();
int nbpp = GDALGetDataTypeSize(eType) / 8;
vector<unsigned char> data(RasterXSize * RasterYSize * RasterCount * nbpp);
error = poDataset -> RasterIO(GF_Read,0,0,RasterXSize,RasterYSize,&data[0],RasterXSize,RasterYSize,eType,RasterCount,0,0,0,0);
vector<unsigned char*>SeperateBitsBands(RasterCount * nbpp);
int sizeOfData = (int)data.size();
int sizeOfSeperateBitsBands = (int)SeperateBitsBands.size();
for (int i = 0 ; i < sizeOfSeperateBitsBands ; i++)
{
for ( int j = 0 ; j < sizeOfData ; j++ )
{
if (j%sizeOfSeperateBitsBands == i)
{
SeperateBitsBands[i]-> pushback(data.at(j));
}
}
}
但在SeperateBitsBands[i]-> pushback(data.at(j));
行中,我得到了错误:
IntelliSense: expression must have pointer-to-class type
error C2227: left of '->pushback' must point to class/struct/union/generic type
在这个代码中,我首先打开了一个图像,并通过RasterIO
函数从"GDAL库"中提取其数字。当然RasterIO按顺序读取图像,所以我试图借助两个嵌套的for循环来分离图像的各个部分
例如,假设图像是位深度为16、大小为300x400的RGB图像(有三个带),则separatedBitsBands将是大小为6的矢量,每个单元指向大小为120000的矢量
最后一天我有一个这样的代码:
vector<GDALRasterBand*>Bands(RasterCount);
for ( i = 0; i<RasterCount; i++)
{
Bands.at(i) -> RasterIO(..............)
}
但我在Bands.at(i) -> RasterIO(..............)
行中没有出现这样的错误
有人能告诉我我可以做这样的事吗?(我的意思是模拟2D矢量)。如果是,如何
为什么我在Bands.at(i) -> RasterIO(..............)
中没有出现错误
最重要的是,使用多维向量会对性能和速度产生很大影响吗
非常感谢
如有任何帮助,我们将不胜感激。
我知道我们不可能有多维向量
可以具有2D矢量,如:
vector< vector<char> > SeperateBitsBands;
请注意:在声明向量的向量时,请注意不要将两个>放在一起,如下所示:
vector<vector<char>> SeperateBitsBands;
因为这个>会被编译器误认为是右移运算符。
相关文章:
- 库特<<恩德尔;不适用于打印 2D 阵列
- 具有可变尺寸的 C++ 2D 阵列
- 如何遍历 2D 阵列?
- 超级对撞机2D阵列:生成嵌套:包装/尺寸问题
- 动态 2D 阵列.为什么分段错误?
- 尝试使用2D阵列
- 分配给阵列时出现分段错误?黑客排名 2D 阵列 - DS.
- 如何将1D阵列访问为2D阵列
- 分配/访问2d阵列,使得2d子块是连续的
- 重新分配2D阵列并删除旧阵列
- 不使用新的动态2D阵列
- 我正在为2D阵列参数而挣扎
- 特征和巨大的密集 2D 阵列
- 使用 std::transform 在 2d C 阵列上转换为 1d C 数组
- 解除分配此特定 2D 阵列的内存
- 使用两个不同大小的一维阵列制作 2D 阵列
- 返回C 中2D阵列的对角线元素总和
- 2D阵列让我卡住了
- 用pybind11铸造2D阵列
- 我的 2D 阵列无法读取文本文件并正确输出