使用Cplusplus实现一个TePoint类,用于存储若干的二维点的集合,支持.size()和[]访问
时间: 2023-08-31 15:33:15 浏览: 115
Cplusplus基础与提高.zip_C++ 基础与提高_c++入门和提高
### 回答1:
以下是TePoint类的实现,其中使用vector来存储二维点的集合:
```c++
#include <iostream>
#include <vector>
using namespace std;
class TePoint {
public:
TePoint() {}
void addPoint(int x, int y) {
points.push_back(make_pair(x, y));
}
int size() const {
return points.size();
}
pair<int, int>& operator[](int i) {
return points[i];
}
private:
vector<pair<int, int>> points;
};
int main() {
TePoint points;
points.addPoint(1, 2);
points.addPoint(3, 4);
points.addPoint(5, 6);
cout << "size: " << points.size() << endl;
cout << "points[1]: (" << points[1].first << ", " << points[1].second << ")" << endl;
return 0;
}
```
在上面的实现中,TePoint类提供了一个addPoint函数用于向集合中添加二维点,size函数用于返回集合中点的个数,[]运算符用于访问集合中的点。在main函数中,我们创建了一个TePoint对象并向其中添加三个点,然后输出集合的大小和第二个点的坐标。
### 回答2:
TePoint类的实现如下:
```cpp
#include <iostream>
#include <vector>
class TePoint {
private:
std::vector<std::pair<int, int>> points; // 存储二维点的集合
public:
void addPoint(int x, int y) {
points.push_back(std::make_pair(x, y)); // 添加点(x, y)到集合中
}
int size() const {
return points.size(); // 返回集合中点的个数
}
std::pair<int, int> operator[](int index) const {
if (index >= 0 && index < points.size()) {
return points[index]; // 返回下标为index的点的坐标
}
else {
std::cerr << "Index out of range!" << std::endl;
exit(1);
}
}
};
int main() {
TePoint pointSet;
pointSet.addPoint(1, 2);
pointSet.addPoint(3, 4);
pointSet.addPoint(5, 6);
int count = pointSet.size();
std::cout << "Size of the point set: " << count << std::endl;
std::cout << "Points in the set: " << std::endl;
for (int i = 0; i < count; ++i) {
std::pair<int, int> point = pointSet[i];
std::cout << "(" << point.first << ", " << point.second << ")" << std::endl;
}
return 0;
}
```
TePoint类使用一个私有成员变量`points`来存储二维点的集合,采用`std::vector<std::pair<int, int>>`类型来实现。类中提供了`addPoint()`方法用于向集合中添加新的点,`size()`方法返回集合的元素个数,`operator[]`方法用于通过下标访问集合中的点。
在主函数中的示例代码演示了如何使用TePoint类。首先创建了一个TePoint对象pointSet,并通过`addPoint()`方法向集合中添加了三个点。然后使用`size()`方法获取集合中点的个数,并通过`operator[]`方法遍历集合中的每一个点,并输出其坐标。
这样就实现了一个TePoint类,能够存储若干二维点的集合,并支持`.size()`和`[]`操作。
### 回答3:
TePoint类的实现可以参考以下示例代码:
```cpp
#include <iostream>
#include <vector>
class TePoint {
private:
std::vector<std::pair<int, int>> points;
public:
// 添加二维点
void addPoint(int x, int y) {
points.push_back(std::make_pair(x, y));
}
// 返回点的个数
int size() {
return points.size();
}
// 重载[]运算符,用于访问点
std::pair<int, int>& operator[](int index) {
return points[index];
}
};
int main() {
TePoint pointSet;
pointSet.addPoint(1, 2);
pointSet.addPoint(3, 4);
pointSet.addPoint(5, 6);
std::cout << "Number of points: " << pointSet.size() << std::endl;
std::cout << "First point: (" << pointSet[0].first << ", " << pointSet[0].second << ")" << std::endl;
return 0;
}
```
TePoint类使用std::vector<std::pair<int, int>>来存储二维点的坐标信息,其中pair<int, int>表示一个二维点的x和y坐标。TePoint类提供了addPoint方法用于添加点,size方法返回点的个数,重载了[]运算符以支持通过下标访问点。在主函数中给pointSet对象添加了三个点,并通过size()方法获取点的个数,通过[]运算符访问第一个点的坐标并打印输出。
阅读全文