【发布时间】:2014-04-14 11:49:23
【问题描述】:
我正在尝试从函数返回一个向量。但是如果我返回整个向量,那么复制过程会花费额外的时间,所以我试图只返回对向量的引用。我如何在 C++ 中做到这一点?这是我目前的功能,
vector<ii>& primeFactors(int n)
{
int i;
vector<ii> factors;
for(i=0; i<=n && n!=1 ; ++i)
{
int cnt = 0;
while((n%primes[i]) == 0)
{
++cnt;
n/=primes[i];
}
if(cnt!=0)
factors.push_back({primes[i],cnt});
}
if(i == lim)
factors.push_back({n,1});
return factors;
}
这是我在 main() 中的调用
vector<ii> factors = primes.primeFactors(20);
【问题讨论】:
-
只返回一个值。在这种情况下返回引用是没有意义的。
-
@juanchopanza 在这种情况下不是,但在很多情况下这是有意义的。
-
你尝试的不是一个好主意,因为不应该返回对局部变量的引用。
-
如果你想这样做,你需要将向量作为函数的引用参数,并传递一个向量来存储函数外部的结果。记得先清除向量。这可以让您重用相同的向量,这在某些情况下可能会更高效。