这是我遇到的问题,如果我解释得不好或者代码质量不好,请不要打我——到目前为止,我只完成了大约 2 周的 C++。
说明:我想构建一个结构(一个结构可能不是最好的决定,但我必须从某个地方开始),它将包含一组点的坐标(仅 x 和 y)(我们称该集合为弧),设置id(可能还有其他字段)。每个集合(弧)可以包含不同数量的点。我已将集合(弧)中的每个点实现为类,然后我的弧结构在向量中包含此类的各种实例(以及其他内容)。
弧形结构示例:
结构1:
标识(整数)1
xY(向量) (0;0) (1;1) (2;2)
结构2:
ID(整数)2
xY (向量) (1;1) (4;4)
问题:
我不知道如何访问我的弧结构中的元素:例如,如果我需要访问 ID 为 1 的 struc 中第二个点的坐标,我想要Struc1.xY[1]
,但是这不能作为我的代码工作(下)立场。我发现这篇文章解释了如何在结构中打印值,但我需要访问这些元素以(稍后)有条件地编辑这些坐标。这怎么可能被实施?
我的尝试:(已编辑)
#include <cmath>
#include <vector>
#include <cstdlib>
#include <stdio.h>
#include <iostream>
using namespace std;
class Point
{
public:
Point();
~Point(){ }
void setX (int pointX) {x = pointX; }
void setY (int pointY) {y = pointY; }
int getX() { return x; }
int getY() { return y; }
private:
int x;
int y;
};
Point::Point()
{
x = 0;
y = 0;
}
struct arc {
int id;
vector<Point> xY;
};
int main(){
arc arcStruc;
vector<Point> pointClassVector;
int Id;
int X;
int Y;
// other fields go here
arc *a;
int m = 2; // Just create two arcs for now
int k = 3; // each with three points in it
for (int n=0; n<m; n++){
a = new arc;
Id = n+1;
arcStruc.id = Id;
Point pt;
for (int j=0; j<k; j++){
X = n-1;
Y = n+1;
pt.setX(X);
pt.setY(Y);
arcStruc.xY.push_back(pt);
}
}
for (vector<Point>::iterator it = arcStruc.xY.begin(); it != arcStruc.xY.end(); ++it)
{
cout << arcStruc.id.at(it);
cout << arcStruc.xY.at(it);
}
delete a;
return 0;
}