vector<Vector3d> boss_faces_dirs; vector<tag_t> not_boss_faces; //非沉头面 vector<tag_t> boss_faces = getBossFace(solid, boss_faces_dirs,not_boss_faces); //优先找沉头面 BossFacesDirData boss_face_dir_data; vector<BossFacesDirData> boss_face_dir_data_vec; boss_face_dir_data_vec.clear(); for (int a = 0; a < boss_faces.size(); a++) { boss_face_dir_data.dir_num = 0; double temp_dir1[3]; getFaceDir(boss_faces[a], temp_dir1); int is_eq = 0; for (int b = 0; b < boss_faces_dirs.size(); b++) { double temp_dir2[3]; temp_dir2[0] = boss_faces_dirs[b].X; temp_dir2[1] = boss_faces_dirs[b].Y; temp_dir2[2] = boss_faces_dirs[b].Z; UF_VEC3_is_equal(temp_dir1, temp_dir2, 0.001, &is_eq); if (is_eq) { boss_face_dir_data.dir_num = b + 1; } } UF_VEC3_copy(temp_dir1, boss_face_dir_data.face_dir); boss_face_dir_data_vec.push_back(boss_face_dir_data); continue; if (boss_face_dir_data.dir_num > 20) { break; } } 用C++11以下版本改进这段代码
时间: 2024-04-17 09:26:27 浏览: 99
要将上述代码改进为适用于 C++11 以下版本的代码,需要进行以下更改:
1. 将 `auto` 关键字替换为具体的类型。
2. 使用传统的 for 循环进行迭代,而不使用范围-based for 循环。
3. 将 `push_back` 替换为 `emplace_back`。
以下是改进后的代码:
```cpp
vector<Vector3d> boss_faces_dirs;
vector<tag_t> not_boss_faces;
vector<tag_t> boss_faces = getBossFace(solid, boss_faces_dirs, not_boss_faces);
BossFacesDirData boss_face_dir_data;
vector<BossFacesDirData> boss_face_dir_data_vec;
boss_face_dir_data_vec.clear();
for (int a = 0; a < boss_faces.size(); a++) {
boss_face_dir_data.dir_num = 0;
double temp_dir1[3];
getFaceDir(boss_faces[a], temp_dir1);
int is_eq = 0;
for (int b = 0; b < boss_faces_dirs.size(); b++) {
double temp_dir2[3];
temp_dir2[0] = boss_faces_dirs[b].X;
temp_dir2[1] = boss_faces_dirs[b].Y;
temp_dir2[2] = boss_faces_dirs[b].Z;
UF_VEC3_is_equal(temp_dir1, temp_dir2, 0.001, &is_eq);
if (is_eq) {
boss_face_dir_data.dir_num = b + 1;
}
}
UF_VEC3_copy(temp_dir1, boss_face_dir_data.face_dir);
boss_face_dir_data_vec.emplace_back(boss_face_dir_data);
if (boss_face_dir_data.dir_num > 20) {
break;
}
}
```
请注意,上述代码中的改进仅基于语言版本的限制,未对代码逻辑进行修改。你需要根据实际需求进行进一步的调整和修改。另外,确保 `Vector3d` 类型和 `getFaceDir` 函数在 C++11 以下版本中都能正常工作。
阅读全文