Soalan 1 reverse_iterator dan iterator ialah dua jenis iterator yang ditakrifkan dalam templat kelas vektor. Pelaksanaan mungkin kelas yang berbeza, seperti:
template </* ... */>
class vector {
public:
class ReverseIterator {...};
class Iterator {...};
using reverse_iterator = ReverseIterator;
using iterator = Iterator;
};
Arah lelaran
reverse_iterator adalah bertentangan dengan arah iterator. Iaitu, jika r1 dan r2 menghala ke elemen yang sama, r1+1 dan r2-1 menghala ke elemen yang sama (jika sah, dan mereka melebihkan operator+ dan operator- masing-masing).
Arah lelaran yang bertentangan dicapai melalui pelaksanaan pengendali yang berbeza. Jika iterator dilaksanakan secara dalaman oleh penunjuk, pelaksanaan operator++ reverse_iterator boleh mengurangkan penunjuk, dan operator++ pelaksanaan iterator boleh menambah penunjuk.
Soalan 2 ostream_iterator<int, char> out_iter(cout, " "); mengisytiharkan dan mentakrifkan pembolehubah, dan memulakan pembolehubah secara langsung. (cout, " ") ialah senarai parameter sebenar. Pengkompil akan cuba memilih pembina berdasarkan senarai parameter ini dan "lulus" parameter ini kepada pembina.
Mengikut standard, cout tidak boleh memberikan nilai kepada int. Sila berikan kod yang berkaitan. Tetapi cout boleh ditukar kepada jenis bool (selepas c++11) atau void * (sebelum c++11). Ini kerana jenis cout mewarisi tika basic_ios dan templat kelas basic_ios yang digunakan untuk membuat instantiat mentakrifkan pengendali penukaran yang berkaitan. Iaitu, bool x = std::cout;
Apakah dua nilai berangka? . reverse_iterator dan iterator ialah iterator, pada asasnya dua templat kelas mencapai fungsi yang berbeza dengan melaksanakan semula butiran fungsi yang berbeza di dalam kelas, tetapi antara muka luaran adalah sama
menjadikan objek out_iter, jenisnya ialah ostream_iterator<int,char>, dan parameter yang dihantar ke dalam pembina ialah cout dan " "
Maksud ayat "cout can assign a value to int" tidak jelas
Soalan 1
Arah lelaranreverse_iterator dan iterator ialah dua jenis iterator yang ditakrifkan dalam templat kelas vektor. Pelaksanaan mungkin kelas yang berbeza, seperti:
reverse_iterator
adalah bertentangan dengan arahiterator
. Iaitu, jika r1 dan r2 menghala ke elemen yang sama,r1+1
danr2-1
menghala ke elemen yang sama (jika sah, dan mereka melebihkanoperator+
danoperator-
masing-masing).Arah lelaran yang bertentangan dicapai melalui pelaksanaan pengendali yang berbeza. Jika iterator dilaksanakan secara dalaman oleh penunjuk, pelaksanaan
operator++
reverse_iterator boleh mengurangkan penunjuk, danoperator++
pelaksanaan iterator boleh menambah penunjuk.Soalan 2
ostream_iterator<int, char> out_iter(cout, " ");
mengisytiharkan dan mentakrifkan pembolehubah, dan memulakan pembolehubah secara langsung.(cout, " ")
ialah senarai parameter sebenar. Pengkompil akan cuba memilih pembina berdasarkan senarai parameter ini dan "lulus" parameter ini kepada pembina.Mengikut standard, cout tidak boleh memberikan nilai kepada int. Sila berikan kod yang berkaitan. Tetapi cout boleh ditukar kepada jenis bool (selepas c++11) atau void * (sebelum c++11). Ini kerana jenis cout mewarisi tika basic_ios dan templat kelas basic_ios yang digunakan untuk membuat instantiat mentakrifkan pengendali penukaran yang berkaitan. Iaitu,
bool x = std::cout;
Apakah dua nilai berangka? .
reverse_iterator
daniterator
ialah iterator, pada asasnya dua templat kelasmencapai fungsi yang berbeza dengan melaksanakan semula butiran fungsi yang berbeza di dalam kelas, tetapi antara muka luaran adalah sama
menjadikan objek
out_iter
, jenisnya ialahostream_iterator<int,char>
, dan parameter yang dihantar ke dalam pembina ialahcout
dan" "
Maksud ayat "cout can assign a value to int" tidak jelas