Rumah  >  Soal Jawab  >  teks badan

java - C++ STL迭代器声明的iterator和reverse_iterator实质区别?是不同数值吗?

问1:Vector<int>::reverse_iterator r1和Vector<int>::iterator r2。
r1和r2作用是截然不同的,这个:reverse_iterator和iterator实质是不同数值吗,为什么会有这个作用?

问2:ostream_iterator<int,char>out_iter(cout," ");括号(cout," ")是什么意思,这是个构造函数?为什么cout能给int赋值?

PHP中文网PHP中文网2712 hari yang lalu761

membalas semua(2)saya akan balas

  • PHPz

    PHPz2017-04-18 10:49:50

    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;

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 10:49:50

    1. 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

    2. 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

    balas
    0
  • Batalbalas