【问题标题】:How can I access member variables of a vector of objects that is a member variable from a class? [closed]如何访问作为类成员变量的对象向量的成员变量? [关闭]
【发布时间】:2019-05-10 16:01:59
【问题描述】:

我知道如何在给定对象向量的情况下访问成员变量,但假设

如果我有一个名为“layer”的类

class layer{
    public: 
        layer(.... that initializes "val" .... ); 
        vector<vector<double>> getval(){return val;}
    private:
        vector<vector<double>> val; 
}

然后假设有另一个类是

class Net{
    public:
        Net( ..... that initializes "nn" ..... ); 
        vector<layer> getnn(){ return nn; }
    private:
        vector<layer> nn; 
}

所以在主函数中,我可以创建一个像

这样的对象
Net n( ....... ) 

在主函数中,我可以通过

获取对象向量
n.getnn(); 

但问题是我怎么能得到具体的,给定 i 索引,

vector<vector<double>> val 

在 nn[i]

【问题讨论】:

  • 无关:getval()getnn() 总是返回成员的副本是故意的吗?
  • 那些.... 是什么?请提供minimal reproducible example
  • 我不确定是否理解这个问题。你似乎知道std::vector 有一个operator[] 来访问像nn[i] 这样的元素。要访问特定层,您可以使用layer l = n.getnn()[i]。然后,您可以使用l.getval()[k][l] 访问特定值。还有别的吗? (PS:如上一条评论中所说,请注意此实现会产生大量副本,并且会显着减慢计算速度。)
  • 哦,在 Net 类中,我可以做 layer l = n.getnn()[i] ...etc 但在主函数中,我该怎么做呢?如果我在主函数中创建一个对象并像 layer l = n.getnn()[i] 那么它告诉我 getnn() 函数不是类 Net 的一部分
  • 另外,如果我想直接返回成员,那么我会返回 this->val ... 等等?由于它直接指向成员,因此不会创建所述成员的副本,对吗?

标签: c++ oop object pointers vector


【解决方案1】:
float value = n.getnn()[i].getval()[j][k];

【讨论】:

  • 请注意解释您的代码,以及它如何解决问题(顺便说一句,目前还不清楚)。
  • 哦,这就是我要找的。这有点道理。
  • 所以我的实现是传递成员和值的副本,所以我应该尽可能使用指针吗?就像在图层类中一样,我应该更改为 getval(){ return this->val; } ?这会提高速度吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
相关资源
最近更新 更多