【发布时间】: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