1

假设我有一个类如下:

class Solution {    
public:    
    std::vector<double> x;
}

假设我有一个功能如下:

void function(Solution& sol) {
    // do some calculations on the solution vector
}

在某些情况下,我会想function直接使用 vector 执行计算x。但是,在某些情况下,我会希望使用由 vector 的映射生成的另一个向量来执行计算x

考虑到这些可能的情况,在类中引入一个附加成员是有意义的Solution,但在第一种情况下,这个附加成员将简单地引用x,而在第二种情况下,这个附加成员本身就是另一个std::vector由一些映射确定的成员形式。

因此,理想情况下,我可以添加一个 ctor 来Solution创建/定义一个名为yastd::vector或仅仅是对x. 然后,我function可以直接使用y.

我该怎么做?

4

1 回答 1

4

您可以将您的功能定义为:

void function(std::vector<double>& x)

并根据情况将不同的向量传递给它

在 ctors 中使用引用进行编辑

class Solution 
{    
    std::vector<double> x;
    std::vector<double>& y; 
public:    
    Solution(std::vector<double>& _y) : y(_y) { }
    Solution() : y(x) { }
    void function() { /* do work on y*/ }    
};

这样你function总是在同一个引用上操作,但你可以控制这个引用引用的数据。请注意,x并且y现在是私有的——这确保这些成员仅通过function()方法在本地使用。

于 2012-11-15T00:57:44.717 回答