假设有vector,由{x,y,z,score}组成,已知某个{x,y}怎么寻找vector中出现的位置,用c++实现
时间: 2023-12-17 16:05:33 浏览: 77
C++vector的实现
5星 · 资源好评率100%
可以使用for循环遍历vector,对比每个元素的{x,y}是否与给定的相同,如果相同就返回该元素的位置。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
typedef struct {
float x;
float y;
float z;
float score;
} Vector;
int findVectorPosition(const vector<Vector> &vec, float x, float y) {
for (int i = 0; i < vec.size(); i++) {
if (vec[i].x == x && vec[i].y == y) {
return i;
}
}
return -1;
}
int main() {
vector<Vector> vec;
Vector v1 = {1, 2, 3, 4};
Vector v2 = {2, 3, 4, 5};
Vector v3 = {5, 6, 7, 8};
vec.push_back(v1);
vec.push_back(v2);
vec.push_back(v3);
float x = 2;
float y = 3;
int pos = findVectorPosition(vec, x, y);
if (pos != -1) {
printf("The vector at position %d contains (%f, %f, %f, %f)\n", pos, vec[pos].x, vec[pos].y, vec[pos].z, vec[pos].score);
} else {
printf("No vector contains (%f, %f)\n", x, y);
}
return 0;
}
```
这段代码首先定义了一个结构体Vector,包含了四个成员变量:x、y、z和score。然后定义了一个名为findVectorPosition的函数,该函数接受一个vector和两个float类型的参数x和y,返回一个int类型的值表示第一个匹配到的元素的位置,如果找不到匹配的元素则返回-1。函数内部使用for循环遍历vector,对比每个元素的x和y是否与给定的相同,如果相同就返回该元素的位置;如果遍历完vector仍然找不到相同的元素,就返回-1。
在main函数中创建了一个包含三个元素的vector,并给他们赋值。然后定义了两个float类型的变量x和y,表示要查找的{x,y}。使用findVectorPosition函数查找vector中是否有匹配的元素,如果找到了,则输出该元素包含的所有成员变量的值;否则输出一个提示信息。
需要注意的是,这里例子中的vector内部存储的元素类型是自定义的结构体Vector,实际应用中vector可以存储任意类型的元素,包括int、float、double、string等,只需要在定义vector时指定模板参数即可。
阅读全文