2
void f(vector<object> *vo) {
}
而且我一個向量的地址傳遞到f
vector<object> vo;
f(&vo);
我將如何使用的push_back()添加到載體? (我是新來的指針)
void f(vector<object> *vo) {
}
而且我一個向量的地址傳遞到f
vector<object> vo;
f(&vo);
我將如何使用的push_back()添加到載體? (我是新來的指針)
取消引用指針:
(*vo).push_back(object());
vo->push_back(object()); // short-hand
注意這是語言的基本概念,你可以從閱讀good book受益。
注意這有一個明顯的缺點:
f(0); // oops, dereferenced null; undefined behavior (crash)
爲了使您的安全功能,您需要正確處理所有有效的指針值(是的,零是有效值)。無論是添加某種形式的檢查:
if (!vo) return;
// or:
if (!vo) throw std::invalid_argument("cannot be null, plz");
,或者通過使用引用讓你的函數本身正確:
void f(vector<object>& vo) // *must* reference a valid object, null is no option
{
vo.push_back(object()); // no need to dereference, no pointers; a reference
}
現在的責任是對函數的調用,爲您提供一個有效的參考。
+1加快4秒。 – 2011-03-18 05:49:26
我個人建議首先參考,但是顯示兩者都是+1。 – Puppy 2011-03-18 07:35:49