私が持っている場合
void f(vector<object> *vo) {
}
そして、ベクトルのアドレスをfに渡します
vector<object> vo;
f(&vo);
push_back()
ベクトルに追加するにはどうすればよいですか?
ポインタを間接参照します。
(*vo).push_back(object());
vo->push_back(object()); // short-hand
これは言語の基本的な概念であることに注意してください。良い本を読むことで恩恵を受けることができます。
これには明らかな欠点があることに注意してください。
f(0); // oops, dereferenced null; undefined behavior (crash)
関数を安全にするには、すべての有効なポインター値を正しく処理する必要があります(はい、nullは有効な値です)。ある種のチェックを追加するか、次のようにします。
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
}
これで、有効な参照を提供する責任は関数の呼び出し元にあります。