Я знаю, как получить доступ к переменным-членам, заданным вектором объектов, но предположим,
если у меня есть класс под названием «слой», который
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
в нн [я]
что это все .... ? Укажите минимальный воспроизводимый пример
Я не уверен, что понял вопрос. Кажется, вы знаете, что у std::vector есть operator[] для доступа к таким элементам, как nn[i]. Чтобы получить доступ к определенному слою, вы можете сделать layer l = n.getnn()[i]. Затем вы можете получить доступ к определенному значению, используя l.getval()[k][l]. Есть что-то еще? (PS. Как сказано в предыдущем комментарии, имейте в виду, что эта реализация делает много копий и может значительно замедлить вычисления.)
о, внутри класса Net я мог бы сделать layer l = n.getnn()[i] ...etc, но в основной функции, как бы я это сделал? если я создаю объект в основной функции и иду как слой l = n.getnn()[i], то это говорит мне, что функция getnn() не является частью класса Net
Кроме того, если я хочу напрямую вернуть членов, я бы вернул this-> val ... и т. д.? поскольку он напрямую указывает на членов, он не будет создавать копию указанных членов, верно?





float value = n.getnn()[i].getval()[j][k];
Не забудьте объяснить свой код, пожалуйста, и как он решает проблему (что, кстати, до сих пор неясно).
Ооооо это то что я искал. Это имеет смысл.
Итак, моя реализация передает копии членов и значений, поэтому я должен использовать указатели везде, где могу? как и в классе Layer, я должен изменить на getval(){ return this->val; } ? это улучшит скорость?
Несвязанный: намеренно ли
getval()иgetnn()всегда возвращают копию участников?