如何使用结构数组作为结构数组的索引
How do I use an array of struct as an index to an array of struct?
我有一个结构数组,其中一些运算符重载
struct xyz
{
int x; float y;
};
std::vector<xyz> a1,a2,a3;
当我将其用作时
a1 [ a2 [ i ] ] = a3 [ i ]
//by this I mean
//a1 [ a2 [ i ].x ].x = a3 [ i ].x
//a1 [ a2 [ i ].x ].y = a3 [ i ].y
我得到这个错误"\OCL6D24.tmp.cl",第236行:错误:表达式必须具有整数或枚举类型
我正在OpenCL内核中使用它。但是这个问题类似于一个普通的C++程序。我该如何解决此问题?
更新:我认为我所需要的是不可能的,尤其是在OpenCL内核的情况下。但我解决了我的问题。这是一个设计缺陷
std::vector::operator[]接受size_t作为输入,但您正在向它传递一个xyz
对象。这就是为什么编译器拒绝您的代码。
为了处理您的代码,您可以重载operator int()
以将对象隐式转换为整数:
struct xyz
{
int x; float y;
operator int()
{
return x;
}
};
但您需要确保返回值和向量中的正确索引相关。
或者使用一些关联容器,如std::unordered_map
。
您必须使用某种关联容器才能做到这一点。例如std::map
或std::unordered_map
(在C++11
上)。std::vector
只支持使用积分类型进行索引(就像错误所说的那样)。
相关文章:
- C++将文本文件中的数据读取到结构数组中
- JSON转换为nlohmann JSON-lib中的结构数组
- 需要帮助将结构数组传递给函数
- 在 64 位边界上对齐C++结构数组?
- 带有枚举方向/类型的气泡排序结构数组
- 在C++中访问结构数组中的数据
- 从指向结构数组的指针中提取元素
- 如何制作一个地图,其中的值是C++中的结构数组
- 如何在函数中显示结构数组
- 包含作为成员C++函数的结构数组
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- std::transform 将一个结构数组复制到另一个结构数组
- 将非托管结构数组封送到托管数组
- 显示结构数组
- 结构数组中所有类似字段的总和
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 如何将字符串字符与结构数组进行比较?
- C++结构数组