📅  最后修改于: 2023-12-03 15:41:10.715000             🧑  作者: Mango
在实际编程中,我们经常需要对一个集合进行操作,比如取出其中最大的几个、求平均值等等。而使用面向对象的编程思想,可以将这些操作封装成一个类,方便调用和管理。本文将介绍一个向量类的解决方案。
向量类是一个动态数组,支持在末尾添加元素、删除末尾元素、随机访问等操作。我们可以使用 C++ 标准库中的 vector 类来实现。比如:
vector<int> nums;
nums.push_back(1);
nums.pop_back();
int a = nums[0];
不过在实际开发中,我们可能需要更多的操作,比如求最大值、求和等操作。这时候我们可以定义一个类来实现这些操作,而不必每次都重复写一遍代码。
我们可以定义一个名为 Vector 的类,其中包括一个 vector 类型的成员变量 nums,用来存储向量中的元素。然后在 Vector 类中实现各种操作,比如求和、求最大值等。
class Vector {
public:
// 向量求和
vector<int> sum(vector<int>& nums) {
vector<int> res(2, 0);
for (int i = 0; i < nums.size(); i++) {
res[0] += nums[i];
res[1] += 1;
}
return res;
}
// 向量求最大值
int getMax(vector<int>& nums) {
int maxVal = INT_MIN;
for (int i = 0; i < nums.size(); i++) {
maxVal = max(maxVal, nums[i]);
}
return maxVal;
}
// 求三和
vector<vector<int>> threeSum(vector<int>& nums) {
// 暂时省略
}
private:
vector<int> nums;
};
我们在 Vector 类中实现了三个操作:sum、getMax 和 threeSum。sum 函数用来求和,并返回两个值,第一个值是向量中所有元素的和,第二个值是向量中元素的个数。getMax 函数用来求最大值,threeSum 函数用来求三个数的和为 0 的所有组合。
使用 Vector 类时需要先实例化一个对象,然后可以调用 Vector 类中定义的函数。比如:
int main() {
vector<int> nums = { -1, 0, 1, 2, -1, -4 };
Vector v;
vector<vector<int>> res = v.threeSum(nums);
for (auto r : res) {
for (auto i : r) {
cout << i << " ";
}
cout << endl;
}
return 0;
}
在这个例子中,我们将 {-1, 0, 1, 2, -1, -4} 传给了 Vector 类的 threeSum 函数,并将结果打印出来。
Vector 类是一个封装了 vector 的类,它定义了许多常用操作,可以减少代码的重复编写。在实际开发中,我们可以根据需求来定义更多的操作,使得代码更加清晰、简洁。