Jak mogę uzyskać const_iterator
z iterator
w C++? A co z const_iterator
z insert_iterator
? Wynikowy kod iterator
powinien wskazywać to samo miejsce, co oryginał.iterator C++ do const_iterator
15
A
Odpowiedz
22
Kontenery są wymagane do zapewnienia iterator
jako typ zamiennego do const_iterator
, więc można przekonwertować domyśle:
Container::iterator it = /* blah */;
Container::const_iterator cit = it;
std::insert_iterator
s wyprowadzane są iteratory. W ten sposób nie można ich przekonwertować na zwykły numer Container::iterator
, który musi być iteratorem do przodu.
Inny rodzaj iteratora wstawki może pozwolić na coś takiego, ale te uzyskane ze standardowych funkcji nie.
Myślę, że można napisać własne otoki wokół std::insert_iterator
że odsłania chroniony członek iter
, chociaż:
template <typename Container>
class exposing_insert_iterator : public std::insert_iterator<Container> {
public:
exposing_insert_iterator(std::insert_iterator<Container> it)
: std::insert_iterator<Container>(it) {}
typename Container::iterator get_iterator() const {
return std::insert_iterator<Container>::iter;
}
};
// ...
std::insert_iterator<Container> ins_it;
exposing_insert_iterator<Container> exp_it = ins_it;
Container::iterator it = exp_it.get_iterator();
4
Można je konwertować. Przykład:
std::vector<int> v;
std::vector<int>::iterator it = v.begin();
std::vector<int>::const_iterator cit = it;
Ale myślę, że nie jest to odpowiedź, której szukasz. Pokaż mi kod. :-)
Powiązane problemy
- 1. C++: Jak napisać const_iterator?
- 2. C++ iterator i reverse iterator
- 3. C++ 11: usunąć stosując const_iterator
- 4. m.find (...) == m.end() - który jest używany, iterator lub const_iterator
- 5. Uzyskiwanie const_iterator z iteratora
- 6. Jak dostosować iterator zestawu, aby zachowywał się jak iterator mapy?
- 7. "Generic" iterator w C++
- 8. Iterator C++ dla pułapek pętli?
- 9. Iterator dla wektora wskaźników nie dereferencing poprawnie
- 10. Dlaczego const_iterator może być używany ze std :: map :: erase
- 11. Konwersja Wyliczanie do iterator
- 12. Składnia foreach i niestandardowa iterator C++ 11
- 13. Wektory C++ STL: pobierz iterator z indeksu?
- 14. iterator doładowania boost i C++ 11 lambda
- 15. Czy istnieje norma iterator cykliczny w C++
- 16. iterator wyjścia C++ z wymazaną czcionką
- 17. C++ deque's iterator unieważniony po push_front()
- 18. Ogólny iterator
- 19. Dlaczego "std :: begin()" zawsze zwraca "const_iterator" w takim przypadku?
- 20. Jak ograniczyć iterator do bycia przyszłym iteratorem?
- 21. Czy w standardzie C + 11 określono, że std :: begin (Container &&) zwraca const_iterator?
- 22. mapa/ustaw iterator nie incrementablemap/set iterator nieodwracalny
- 23. Wektor Iterator: brak dopasowania dla 'operator ='
- 24. push iterator do wektora (lub dowolnej kolekcji)
- 25. Przechodząc iterator i grafika do funkcji
- 26. W zamówienie iterator do binarnego drzewa
- 27. Wysyłanie StopIteration do pętli spoza iterator
- 28. jak dostać iterator do konkretnego położenia wektora
- 29. Java Set iterator, bezpieczny do usuwania elementów?
- 30. Problem iteratora i const_iteratora C++ dla własnej klasy kontenera
Odlewanie nie działa? – Pubby
@ Pubby8: Nie potrzebujesz nawet obsady! –
Huh, chyba zawiodłem. Myślałem, że mam błąd kompilatora, gdy próbowałem je niejawnie przekonwertować. –