У меня есть функция myfun
, которая вернет вектор.функция использования внутри цикла, который возвращает вектор
vector<double> myfun(const size_t k, const size_t i){
vector<double> v(k);
// do some computation with remaining arguments
return v;
}
Тогда, я буду использовать его в петлю, чтобы обновить v
и использовать v
, чтобы получить какой-то результат.
int main(){
size_t N = 100; // iteration size
size_t n = 10; // size of v
vector<double> result(N);
vector<double> v(n);
for(size_t i = 0; i<N; i++){
v = myfun(n,i); // compute for each iteration
result[i] = compute_some_value(v);
}
}
Итак, мой вопрос:
- ли
v
фактически выделяется внутриmyfun
каждый раз, когда она называется? - Если да, то что происходит со старым
v
? - Кроме того, лучше использовать только адрес использования, например
void myfun(some_args, vector<double> &v)
для вывода аргументаv
?