使用c++判断类型并定义UNKNOWN = 0, UNKNOWN_MOVABLE = 1, UNKNOWN_UNMOVABLE = 2, PEDESTRIAN = 3, BICYCLE = 4, VEHICLE = 5, MAX_OBJECT_TYPE = 6,五种类型利用二维表的关联距离计算
时间: 2023-08-26 21:03:51 浏览: 43
可以使用一个二维数组来表示对象类型之间的关联距离,数组的行和列表示对象类型,数组中的元素表示两种对象类型之间的距离(或者相似度)。下面是一个示例代码:
```c++
#include <iostream>
#include <vector>
enum ObjectType {
UNKNOWN = 0,
UNKNOWN_MOVABLE = 1,
UNKNOWN_UNMOVABLE = 2,
PEDESTRIAN = 3,
BICYCLE = 4,
VEHICLE = 5,
MAX_OBJECT_TYPE = 6,
};
std::string ObjectTypeToString(ObjectType type) {
switch (type) {
case UNKNOWN:
return "UNKNOWN";
case UNKNOWN_MOVABLE:
return "UNKNOWN_MOVABLE";
case UNKNOWN_UNMOVABLE:
return "UNKNOWN_UNMOVABLE";
case PEDESTRIAN:
return "PEDESTRIAN";
case BICYCLE:
return "BICYCLE";
case VEHICLE:
return "VEHICLE";
default:
return "UNKNOWN";
}
}
int main() {
// 构建关联距离矩阵
const int ROWS = ObjectType::MAX_OBJECT_TYPE;
const int COLS = ObjectType::MAX_OBJECT_TYPE;
std::vector<std::vector<double>> distances(ROWS, std::vector<double>(COLS));
distances[UNKNOWN][UNKNOWN_MOVABLE] = 0.3;
distances[UNKNOWN][UNKNOWN_UNMOVABLE] = 0.4;
distances[UNKNOWN][PEDESTRIAN] = 0.5;
distances[UNKNOWN][BICYCLE] = 0.6;
distances[UNKNOWN][VEHICLE] = 0.7;
distances[UNKNOWN_MOVABLE][UNKNOWN_UNMOVABLE] = 0.1;
distances[UNKNOWN_MOVABLE][PEDESTRIAN] = 0.2;
distances[UNKNOWN_MOVABLE][BICYCLE] = 0.3;
distances[UNKNOWN_MOVABLE][VEHICLE] = 0.4;
distances[UNKNOWN_UNMOVABLE][PEDESTRIAN] = 0.2;
distances[UNKNOWN_UNMOVABLE][BICYCLE] = 0.3;
distances[UNKNOWN_UNMOVABLE][VEHICLE] = 0.4;
distances[PEDESTRIAN][BICYCLE] = 0.1;
distances[PEDESTRIAN][VEHICLE] = 0.2;
distances[BICYCLE][VEHICLE] = 0.3;
// 读取两个对象类型并计算它们之间的关联距离
int type1, type2;
std::cout << "请输入两个对象类型的编号(0-5):" << std::endl;
std::cin >> type1 >> type2;
if (type1 >= 0 && type1 < ROWS && type2 >= 0 && type2 < COLS) {
double distance = distances[type1][type2];
std::cout << ObjectTypeToString(static_cast<ObjectType>(type1)) << " 和 " << ObjectTypeToString(static_cast<ObjectType>(type2)) << " 之间的关联距离是:" << distance << std::endl;
} else {
std::cout << "输入的对象类型编号不合法!" << std::endl;
}
return 0;
}
```
以上代码中,`distances`是一个二维数组,用于存储对象类型之间的关联距离。在数组中,每一个元素表示两种对象类型之间的距离(或者相似度)。在示例代码中,我使用了一个简单的距离矩阵,其中每个元素的取值都是人工预先定义的。
在`main`函数中,首先构建关联距离矩阵,然后读取用户输入的两个对象类型编号,计算它们之间的关联距离,并输出结果。如果输入的编号不合法,则输出错误提示。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)