vector容器中怎么存坐标数据
时间: 2024-09-08 16:04:27 浏览: 116
在C++标准库中,`std::vector`通常用于动态数组,可以存储任意类型的元素,包括坐标数据。如果你需要存储二维或三维坐标,例如`(x, y)`或`(x, y, z)`,你可以创建一个结构体(struct)或者类来封装坐标信息,然后将这个结构体实例作为`vector`的元素。
首先,定义一个结构体,比如:
```cpp
struct Coordinate {
double x;
double y; // 对于二维坐标
double z; // 对于三维坐标,如果需要的话
};
```
接着,你可以这样做:
```cpp
std::vector<Coordinate> coordinates; // 创建一个vector来存放坐标
// 存储坐标
coordinates.push_back({1.0, 2.0}); // 二维坐标
// 或者
coordinates.push_back({1.0, 2.0, 3.0}); // 三维坐标
// 访问坐标
for (const auto& coord : coordinates) {
std::cout << "Coord (" << coord.x << ", " << coord.y << ")"; // 打印二维坐标
// 如果是三维,添加 z 的打印
}
```
相关问题
C++怎么在一幅灰度图像中找到一个已知像素值的所有坐标,并把坐标放到vector容器中返回
可以使用双重循环遍历图像中的每个像素,找出值与已知像素值相同的像素,并将其坐标加入到vector容器中返回。代码示例如下:
```c++
vector<Point> findPixel(Mat image, uchar value) {
vector<Point> result;
for (int i = 0; i < image.rows; i++) {
for (int j = 0; j < image.cols; j++) {
if (image.at<uchar>(i, j) == value) {
Point pt(j, i);
result.push_back(pt);
}
}
}
return result;
}
```
其中,Mat是OpenCV中表示图像的数据类型,<uchar>是表示像素类型的模板参数,Point是表示二维坐标的数据结构。在函数中使用at()方法获取图像中指定位置的像素值。
设计如下基本几何图形类: 类点CPt(含x,y)、线(CLn);点是线的成员数据,用 vector 容器,在线上实现如下操作: a) 在 pos 位置前加入新点。 b) 删除 pos 位置的点。 c) 修改 pos 点的坐标。 d) 返回点数。 (pos是传入的序号参数)
下面是对应的类的实现代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 点类,含有 x, y 坐标
class CPt {
public:
CPt() : x(0), y(0) {}
CPt(int x, int y) : x(x), y(y) {}
int getX() const { return x; }
int getY() const { return y; }
void setX(int x) { this->x = x; }
void setY(int y) { this->y = y; }
private:
int x;
int y;
};
// 线类,含有点的向量
class CLn {
public:
CLn() {}
int size() const { return pts.size(); }
void insert(int pos, const CPt& pt) { pts.insert(pts.begin() + pos, pt); }
void erase(int pos) { pts.erase(pts.begin() + pos); }
void modify(int pos, const CPt& pt) { pts[pos] = pt; }
private:
vector<CPt> pts;
};
int main() {
CLn ln;
ln.insert(0, CPt(1, 1));
ln.insert(1, CPt(2, 2));
ln.insert(2, CPt(3, 3));
ln.erase(1);
ln.modify(0, CPt(4, 4));
cout << "The number of points: " << ln.size() << endl;
return 0;
}
```
在上面的代码中,我们使用了 STL 中的 vector 容器来存储点。实现了在指定位置插入、删除、修改点的操作。此外,我们还在 main 函数中演示了如何使用这些操作。
阅读全文