4

http://en.cppreference.com/w/cpp/iterator/back_insert_iteratorを見るとstd::back_insert_iterator

コンテナの push_back メソッドが呼び出されることを示しています。コンテナに push_back のメソッドがあるかどうかをどのように知るのでしょうか? 仮想クラスを拡張するクラスが必要ですか? また、それはどこで定義されていますか?

4

7 に答える 7

6

コンテナの push_back メソッドが呼び出されることを示しています。コンテナに push_back のメソッドがあるかどうかをどのように知るのでしょうか? 仮想クラスを拡張するクラスが必要ですか? また、それはどこで定義されていますか?

いいえ、push_back()通常は仮想メソッドではありません。

は、渡されたオブジェクトstd::back_insert_iteratorを呼び出すテンプレートです。push_back()メソッドが欠落している場合、コンパイル エラーが発生します。

于 2013-10-31T08:17:57.683 に答える
4

魔法のようにこれが真実であることを知りません。代わりに、そのような関数が見つからない場合、コンパイルに失敗します。

呼び出す操作 (この場合は代入)push_backは を使用して記述されてpush_backおり、指定されたコンテナーにその名前の関数がない場合、その関数の呼び出しは単にコンパイルされません。

于 2013-10-31T08:17:44.143 に答える
1

それは知りません、あなたはそれを知っているべきです。必要なコンテナを渡す必要がありpush_backますstd::back_insert_iterator。そうしないと、コンパイル エラーが発生します。

たとえば、これを a に使用すると、次のsetエラーが発生します。

「class std::set」には「push_back」という名前のメンバーがありません

于 2013-10-31T08:18:33.997 に答える