Nowy standard C++ 11 wymaga implementacji STL do obsługi stanów zmiennych w kontenerach. Czy główne implementacje STL (Visual Studio 2008, 2010, libstdC++) są zgodne z tym wymaganiem? Nie znalazłem nic o tym w MSDN lub w dokumentacji libstdC++.Obsługa kompilatorów dla podzielników stanów w kontenerach STL
Odpowiedz
wygląda cechą stanowych podzielników w pojemnikach STL już jest szeroko wspierany. W większości przypadków stanowość alokatora nie powoduje problemów. To, co nie jest jeszcze szeroko wspierane, to nowy sposób radzenia sobie z problematycznymi sytuacjami (zamiana kontenera (czy zamieniać również alokatorem), splice list).
This thread mówi:
w kodzie dla większości bibliotek standardowych bieżących (w tym Dinkumware na stosowany przez MS), stanowe podzielniki są obsługiwane
This tread (libstdC++, 2004) mówi (o ile zrozumiałem poprawnie):
Wspieramy już alokatory, gdzie
l1.get_allocator() != l2.get_allocator()
. Nie robimy żadnych specjalnych postanowień, aby wykryć te alokatory wsplice()
iswap()
.
This blog entry (libstdC++, 2009) mówi:
istniejących kontenerów w trybie C++ 0x są teraz bardziej efektywne wraz z stanowych podzielników (czyli nie ma podzielniki są tworzone w locie na elemencie czasu budowy).
This document mówi o nowym libc++ library:
Wszystkie pojemniki spełniają wszystkie najnowsze wymagania podzielnik które w pełni obsługują stanowe podzielników. - Przestrzeń dla podzielników bezstanowych zoptymalizowanych.
EASTL obsługuje państwowe podzielniki.
This thread zawiera interesujący spór dotyczący przenośności tej funkcji.
Tak więc większość implementacji STL obsługuje podzielniki stanów, co oznacza, że nie tworzą one dodatkowych instancji typu alokatora pod maską, ale przechowują instancję alokatora dostarczoną przez klienta, a wszystkie alokacje/deallokacje są wykonywane przez to. Jednak sposób, w jaki obsługują one pingowanie swap
i list::splice
jest nieudokumentowanym, nieprzenośnym.
AKTUALIZACJA: STL VS2008 wymaga, aby alokatory miały konstruktora kopiującego z szablonami, co uniemożliwia IMO najważniejsze użycie niestandardowych alokatorów: proste, posegregowane przechowywanie.
Dla każdego, kto nie jest zadowolony z obecnego stanu stateful podzielników w STL, polecam rozważyć Boost.Intrusive
i Boost.Container
.
Właściwie _wszystkie biblioteki standardowe wymagają, aby alokatory miały szablonowy konstruktor kopiowania i szablon 'rebind' i używają ich. Dzieje się tak, ponieważ wszystkie pojemniki z wyjątkiem 'wektora' i' deque' przydzielają elementy jako część struktury definiowanej przez implementację, więc muszą utworzyć alokację dla tej struktury z udostępnionego przydziału. Jest to rzecz, o której autor przydziału musi po prostu wziąć pod uwagę. –
g ++ does not Algorytmy pomocy o przydzielonym zasięgu jeszcze.
VS2010 Adapter jest pewne niestandardowe podzielników but not apparently the standard ones
Przydzielanie z ustalonym harmonogramem! = Przydział stanowy –
- 1. Przenosić własność w kontenerach STL?
- 2. Trwałe referencje w kontenerach STL
- 3. Obsługa kompilatorów wyrażenia wyrażeń GNU
- 4. Obsługa różnych stanów połączeń przed otwarciem SqlConnection
- 5. Obsługa błędów STL bez wyjątków
- 6. (C) Taktyki wdrożeniowe dla podzielników sterty?
- 7. Optymalizacja IL dla kompilatorów JIT
- 8. Biblioteka współdzielona w kontenerach
- 9. Obsługa Doxygen STL za pomocą wykresów punktowych
- 10. maszyny stanów i wiele stanów
- 11. Eclipse CDT nie może parsować metod na elementach w kontenerach STL.
- 12. Indeksowanie w kontenerach: podstawy matematyczne
- 13. STL dla sterty Fibonacciego?
- 14. dokumentacja dla STL
- 15. Klasy abstrakcyjne w kontenerach standardowych
- 16. Rozwiązanie celu CocoaPods zastępuje ostrzeżenia dla kompilatorów
- 17. Wykorzystanie pamięci w kontenerach Docker
- 18. Ogromne pliki w kontenerach Docker
- 19. Kraj, lista stanów dla SQL Server
- 20. Różne tła dla różnych stanów UI-router
- 21. Ustawianie różnych czcionek dla różnych stanów UIButton
- 22. Więcej podejść .net dla dynamicznego automatu stanów
- 23. Generowanie dokumentacji dla stanów stosów soli
- 24. Interesujące projekty kompilatorów
- 25. Korzystanie komparator dla STL ustawić
- 26. Standardowe predykaty dla STL count_if
- 27. Jak zastosować różne opcje kompilatora dla różnych kompilatorów w cmake?
- 28. Wykrywanie Święta Stanów Zjednoczonych
- 29. Nazwane zakresy stanów w state_machine
- 30. różne obrazy dla włączania i wyłączania stanów przycisku w WPF
Czy chcesz zaakceptować jedną z tych odpowiedzi? – spraff