如果我有一個因素功能f
:構建STL容器聲明之後
typedef std::vector<int> IntVec;
const IntVec f(...) {
IntVec retval;
...
return retval;
}
,我需要聲明後延遲的定義如下:
IntVec instance;
if (...) {
instance = f(a, ...);
}
else {
instance = f(b, ...);
}
是否有建議的方式來做到這一點?現在
,我用容器的指針要做得像:
std::auto_ptr<IntVec> pinstance(NULL);
if (...) {
pinstance.reset(new IntVec(f(a, ...)));
}
else {
pinstance.reset(new IntVec(f(b, ...)));
}
IntVec& instance(*pinstance);
有沒有更好的辦法?
感謝
雅,你是對的。我的例子需要程序員照顧懸而未決的參考。 – wush978
順便說一句,是 IntVec實例; instance = f(...); 效率與 IntVec實例(f(...)); ? – wush978
@ wush978我不確定。我相信所有的差異都是無關緊要的。你可以運行測試來檢查。 –