Pytania otagowane jako stl

Standardowa biblioteka szablonów (STL) to biblioteka C ++ zawierająca ogólne kontenery, iteratory, algorytmy i obiekty funkcji. Kiedy C ++ został znormalizowany, duże części STL zostały zaadoptowane do Biblioteki Standardowej, a te części w Bibliotece Standardowej są czasami błędnie określane zbiorczo jako „STL”.

3
jak zapewnić funkcję wymiany dla mojej klasy?
Jaki jest właściwy sposób włączenia moich swapalgorytmów w STL? 1) Członek swap. Czy std::swapużywać SFINAE podstęp używać elementu swap. 2) Wolnostojący swapw tej samej przestrzeni nazw. 3) Częściowa specjalizacja std::swap. 4) Wszystkie powyższe. Dziękuję Ci. EDYCJA: Wygląda na to, że nie sformułowałem jasno mojego pytania. Zasadniczo mam klasę szablonu i …
89 c++  algorithm  stl  swap 

7
Dlaczego nie możemy zadeklarować std :: vector <AbstractClass>?
Spędziwszy trochę czasu na rozwijaniu w C #, zauważyłem, że jeśli zadeklarujesz klasę abstrakcyjną w celu użycia jej jako interfejsu, nie możesz utworzyć instancji wektora tej klasy abstrakcyjnej do przechowywania instancji klas potomnych. #pragma once #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class IFunnyInterface { public: virtual void IamFunny() = …

4
Jak mogę stworzyć własny komparator dla mapy?
typedef map&lt;string, string&gt; myMap; Podczas wstawiania nowej pary do myMap, użyje klucza stringdo porównania przez własny komparator ciągów. Czy można zastąpić ten komparator? Na przykład chciałbym porównać klucz na stringpodstawie jego długości, a nie alfabetu. Czy jest jakiś inny sposób sortowania mapy?
87 c++  stl  stdmap 

10
Dlaczego wolałbym używać wektora do deque
Od oba są ciągłymi kontenerami pamięci; pod względem funkcji, deque ma prawie wszystko, co ma wektor, ale więcej, ponieważ bardziej wydajne jest wstawianie z przodu. Dlaczego Whould ktoś preferuje std::vectorsię std::deque?
86 c++  stl  vector  deque 

12
Skopiuj wartości mapy do wektora w STL
W tej chwili przebijam się przez Effective STL. Punkt 5 sugeruje, że zwykle lepiej jest używać funkcji składowych zakresu niż ich odpowiedników z jednym elementem. Obecnie chcę skopiować wszystkie wartości z mapy (tj. - nie potrzebuję kluczy) do wektora. Jaki jest najczystszy sposób na zrobienie tego?
86 c++  stl  containers 

15
użyj std :: fill, aby zapełnić wektor rosnącymi liczbami
Chciałbym wypełnić vector&lt;int&gt;użycie std::fill, ale zamiast jednej wartości wektor powinien zawierać liczby w kolejności rosnącej po. Próbowałem to osiągnąć, iterując trzeci parametr funkcji o jeden, ale to dałoby mi tylko wektory wypełnione 1 lub 2 (w zależności od pozycji ++operatora). Przykład: vector&lt;int&gt; ivec; int i = 0; std::fill(ivec.begin(), ivec.end(), i++); …
85 c++  stl 

6
Dlaczego potrzebuję std :: get_temporary_buffer?
W jakim celu powinienem użyć std::get_temporary_buffer? Standard mówi, co następuje: Uzyskuje wskaźnik do pamięci wystarczającej do przechowywania do n sąsiadujących obiektów T. Myślałem, że bufor zostanie przydzielony na stosie, ale to nieprawda. Zgodnie ze standardem C ++ ten bufor w rzeczywistości nie jest tymczasowy. Jakie zalety ma ta funkcja w …

1
Jaki jest sens cech postaci STL?
Zauważyłem, że w mojej kopii odniesienia do SGI STL jest strona o cechach postaci, ale nie widzę, jak są one używane? Czy zastępują funkcje string.h? Wydaje się, że nie są używane przez std::string, np. length()Metoda on std::stringnie korzysta z length()metody cech charakteru . Dlaczego cechy charakteru istnieją i czy są …

5
Jak wybrać między mapą a unordered_map?
Załóżmy, że chciałbym zmapować dane z ciągiem znaków jako kluczem. Jaki pojemnik powinienem wybrać, mapczy unordered_map? unordered_mapzajmuje więcej pamięci, więc załóżmy, że pamięć nie jest problemem, a problemem jest szybkość. unordered_mappowinien generalnie dawać średnią złożoność O (1) z najgorszym przypadkiem O (n). W jakich przypadkach doszłoby do O (n)? Kiedy …

8
Nie można dołączyć nagłówków C ++, takich jak vector, w Android NDK
Kiedy próbuję dołączyć dowolną klasę C ++, taką jak wektor, do mojego projektu Android NDK (używając NDK r5b, najnowszego), pojawia się błąd podobny do następującego ... Compile++ thumb : test-libstl &lt;= test-libstl.cpp /Users/nitrex88/Desktop/Programming/EclipseProjects/STLTest/jni/test-libstl.cpp:3:18: error: vector: No such file or directory Inne osoby, które zgłosiły ten problem w Internecie, odniosły sukces, …

17
Jak implodować wektor strun w strunę (elegancki sposób)
Szukam najbardziej eleganckiego sposobu na implodowanie wektora strun w ciąg. Poniżej znajduje się rozwiązanie, którego teraz używam: static std::string&amp; implode(const std::vector&lt;std::string&gt;&amp; elems, char delim, std::string&amp; s) { for (std::vector&lt;std::string&gt;::const_iterator ii = elems.begin(); ii != elems.end(); ++ii) { s += (*ii); if ( ii + 1 != elems.end() ) { s …
83 c++  string  stl  stdstring  implode 

8
W std :: multiset jest funkcja lub algorytm do usuwania tylko jednej próbki (unicate lub duplikat), jeśli element zostanie znaleziony
Być może jest to duplikat, ale nie znalazłem niczego szukającego: kiedy erase(value)jest wywoływany, std::multisetwszystkie elementy ze znalezioną wartością są usuwane. Jedyne rozwiązanie, jakie przychodzi mi do głowy, to: std::multiset&lt;int&gt;::iterator hit(mySet.find(5)); if (hit!= mySet.end()) mySet.erase(hit); To jest w porządku, ale pomyślałem, że może być lepiej. Jakieś pomysły ?
82 c++  stl  multiset 


12
char * vs std :: string w c ++ [zamknięte]
W obecnym stanie to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi będą poparte faktami, referencjami lub ekspertyzą, ale to pytanie prawdopodobnie będzie wymagało debaty, argumentów, ankiet lub rozszerzonej dyskusji. Jeśli uważasz, że to pytanie można poprawić i prawdopodobnie ponownie otworzyć, odwiedź centrum pomocy, aby uzyskać …
81 c++  stl  stdstring  arrays 

6
std :: vector :: resize () a std :: vector :: Reserve ()
Jest wątek w sekcji komentarzy w tym poście na temat korzystania std::vector::reserve()Vs. std::vector::resize(). Oto oryginalny kod: void MyClass::my_method() { my_member.reserve(n_dim); for(int k = 0 ; k &lt; n_dim ; k++ ) my_member[k] = k ; } Uważam, że aby wpisać elementy w elemencie vector, właściwą rzeczą jest wywołanie std::vector::resize(), a …
80 c++  stl  vector 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.