📜  类解决方案{公共:向量<vector<int> &gt; 三和(向量<int>&amp; nums) 含义 - C++ (1)

📅  最后修改于: 2023-12-03 15:41:10.715000             🧑  作者: Mango

类解决方案{公共:向量<vector> 三和(向量& nums) 含义 - C++
介绍

在实际编程中,我们经常需要对一个集合进行操作,比如取出其中最大的几个、求平均值等等。而使用面向对象的编程思想,可以将这些操作封装成一个类,方便调用和管理。本文将介绍一个向量类的解决方案。

向量类介绍

向量类是一个动态数组,支持在末尾添加元素、删除末尾元素、随机访问等操作。我们可以使用 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 的类,它定义了许多常用操作,可以减少代码的重复编写。在实际开发中,我们可以根据需求来定义更多的操作,使得代码更加清晰、简洁。