Pętla C++ 11 dla pętli odejmuje iterator. Czy to oznacza, że nie ma sensu używać go z boost::adaptor::indexed
? Przykład:Oparte na zakresie pętli z boost :: adapter :: indeksowane
boost::counting_range numbers(10,20);
for(auto i : numbers | indexed(0)) {
cout << "number = " i
/* << " | index = " << i.index() */ // i is an integer!
<< "\n";
}
Zawsze mogę użyć licznika, ale lubię indeksowane iteratory.
- Czy można z nich korzystać w jakiś sposób w oparciu o pętle?
- Jaki jest idiom używania pętli opartych na zakresie z indeksem? (tylko zwykły licznik?)
'indexed' zasysa ponieważ dodaje' indeks() 'metodę do iteracyjnej * *, a nie wartość zwróconą dereferencing iteracyjnej. :/ – Xeo
@Xeo Rzeczywiście. Od czasu do czasu potrzebuję indeksu elementu w zakresie. Najpierw źle się z tym czuję. Następnie wprowadzam licznik. Jeśli można łatwo uzyskać dostęp do kontenera za pomocą zwykłej starej pętli, znowu czuję się źle i przepisuję pętlę bazującą na zwykłą pętlę. – gnzlbg
, ponieważ wspomniany indeks przyspieszenia Xeo nie jest do tego odpowiedni. Jeśli nie masz nic przeciwko przełączaniu bibliotek to kilka bibliotek klasy C++ opartych na itertoolach Pythona, takich jak: https://github.com/ryanhaining/cppitertools/ – Cechner