2013-01-18 17 views
23

Przeczytałem VC11 Blog o funkcjach C++ 11 VC11, gdy już przyszedłem do tematu SCARY iterators.Co to są Iteratory SCARY?

Jakie są przerażające iteratory i jak to wpływa na moje doświadczenie C++ kodowania?

+3

są opisane w [n2980] (http://www.open-std.org/jtc1/sc22/WG21/docs/papers/2009/n2980.pdf) i [n2911] (http: // www. open-std.org/jtc1/sc22/WG21/docs/papers/2009/n2911.pdf). Czytałeś te gazety? – Mankarse

+5

http://blogs.msdn.com/b/vcblog/archive/2012/04/06/10291485.aspx – Macmade

+1

Zawsze chciał, że 'std :: vector :: byłoby iterator' być zwykły stary' 'T * . Nie ma nic bardziej przerażającego niż to. – ybungalobill

Odpowiedz

12

Jeśli jesteś , używając ich, nie ma potrzeby, aby uzyskać SCAREd ... po prostu zignoruj ​​ich SCARY-ness.

Jeśli dokonywania je, co oznacza, że ​​trzeba dokonać iteratory niezależne od rodzaju przydzielania kontenera i innych parametrów ogólnych do pojemnika, że ​​nie wpływają one na iteratory.

+1

Z ciekawości, dla dowolnego obiektu z niestandardowym alokatorem lub w przypadku, gdy istnieje możliwość, że obiekt będzie miał niestandardowy przydział, nie byłoby lepiej użyć 'decltype' zamiast polegać na tym, czy twój kompilator implementuje iteratory SCARY? Na przykład, jeśli z jakiegoś powodu utworzenia 'std :: vector > vTerribleIdea',' decltype (vTerribleIdea) :: iterator' wzrośnie do właściwego iterator, niezależnie od tego, czy jest związany iterator do alokatora lub nie. [Zobacz http://ideone.com/MLHhCa lub uruchom MSVC, aby uzyskać bardziej czytelną treść. ] –

+1

widzę jak SCARY iteratory są przydatne do wcześniej istniejącego kodu i pozwolić kompilator obsłużyć kod poprawnie bez niego musiałyby być przepisywane w celu uwzględnienia innych niż domyślne iteratory, ale są one zbędne pisząc nowy typ niezależne kod ze względu na "decltype", czy też jest jakaś korzyść z używania zachowania SCARY w jawnym określaniu typu iteratora z 'decltype', którego nie jestem świadomy? [Nie licząc kompilatorów, które nie są zgodne z C++ 11, zazwyczaj nie obsługują ani SCARY, ani iteratorów, ani 'decltype'.] –

2

Od połączonego PDF, w http://www.open-std.org/jtc1/sc22/WG21/docs/papers/2009/n2911.pdf

akronimem SCARY opisuje zadania i inicjacji, które są Pozornie błędna (pojawiających ograniczona przez sprzeczne parametry ogólne), ale faktycznie pracują z prawem realizacji (niewymuszony przez konflikt ze względu na zminimalizowane zależności).

+24

+0,5 dla odniesienie (chociaż linki nie są odpowiedziami). +0,5 do cytowania backronym (choć nie jest to zbyt objaśniające bez dalszego kontekstu). -1 za brak odpowiedzi na pytanie. –