结构体stra 成员 double x,double y , vector<stra>vB, 假如 vB[i] 和 vB[j] 的距离小于5, 存入vector<stra>,在存入 vector< vector<stra>>&vvBB,写出C++完整过程
时间: 2024-04-13 12:29:20 浏览: 272
以下是一个完整的C++过程,用于将满足条件的stra结构体存入vvBB:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
struct stra {
double x;
double y;
};
double calcDistance(const stra& a, const stra& b) {
double dx = a.x - b.x;
double dy = a.y - b.y;
return std::sqrt(dx * dx + dy * dy);
}
void processV(vector<stra>& vB, vector<vector<stra>>& vvBB) {
vector<stra> temp;
for (int i = 0; i < vB.size(); i++) {
for (int j = i + 1; j < vB.size(); j++) {
double distance = calcDistance(vB[i], vB[j]);
if (distance < 5) {
temp.push_back(vB[i]);
temp.push_back(vB[j]);
}
}
}
vvBB.push_back(temp);
}
int main() {
vector<stra> vB = { /* 初始化vB */ };
vector<vector<stra>> vvBB;
processV(vB, vvBB);
// 输出结果
for (const auto& v : vvBB) {
for (const auto& s : v) {
std::cout << "x: " << s.x << ", y: " << s.y << std::endl;
}
}
return 0;
}
```
请注意,在上述代码中,`calcDistance`函数用于计算两个stra结构体之间的欧几里得距离。`processV`函数遍历vB中的stra结构体并检查它们之间的距离,如果距离小于5,则将这两个stra结构体存入临时的vector<stra>容器temp中。最后,temp被存入vvBB中,以满足条件的stra结构体为一组。
请根据实际需求初始化vB并使用上述代码进行测试。
阅读全文