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”.


6
Jak określić wskaźnik do przeciążonej funkcji?
Chcę przekazać przeciążoną funkcję do std::for_each()algorytmu. Na przykład, class A { void f(char c); void f(int i); void scan(const std::string& s) { std::for_each(s.begin(), s.end(), f); } }; Spodziewałbym się, że kompilator rozwiąże f()typ iteratora. Najwyraźniej to (GCC 4.1.2) tego nie robi. Jak więc mogę określić, co f()chcę?
137 c++  stl 

5
Operator podwójnego adresu w C ++? (&&)
Czytam kod źródłowy STL i nie mam pojęcia, co &&ma zrobić operator adresu. Oto przykład kodu z stl_vector.h: vector& operator=(vector&& __x) // <-- Note double ampersands here { // NB: DR 675. this->clear(); this->swap(__x); return *this; } Czy „Adres adresu” ma sens? Dlaczego ma dwa operatory adresu zamiast tylko jednego?

3
Co się stanie, jeśli wywołasz funkcję erase () na elemencie mapy podczas iteracji od początku do końca?
W poniższym kodzie wykonuję pętlę przez mapę i sprawdzam, czy element musi zostać usunięty. Czy można bezpiecznie wymazać element i kontynuować iterację, czy też muszę zebrać klucze w innym kontenerze i wykonać drugą pętlę, aby wywołać funkcję erase ()? map<string, SerialdMsg::SerialFunction_t>::iterator pm_it; for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++) …
133 c++  stl  iterator 

7
Jak posortować wektor par na podstawie drugiego elementu pary?
Jeśli mam wektor par: std::vector<std::pair<int, int> > vec; Czy istnieje łatwy sposób sortowania listy w kolejności rosnącej na podstawie drugiego elementu pary? Wiem, że mogę napisać mały obiekt funkcyjny, który wykona pracę, ale czy istnieje sposób na użycie istniejących części STL i std::lesswykonanie tej pracy bezpośrednio? EDYCJA: Rozumiem, że mogę …
133 c++  stl  stdvector 

2
Jak ustawić początkowy rozmiar std :: vector?
Mam vector<CustomClass*>i umieszczam dużo elementów w wektorze i potrzebuję szybkiego dostępu, więc nie używam listy. Jak ustawić początkowy rozmiar wektora (np. Na 20 000 miejsc, żeby uniknąć kopiowania przy wstawianiu nowego)?
132 c++  stl 

7
Dlaczego std :: queue :: pop nie zwraca wartości.?
Przeszedłem przez tę stronę, ale nie mogę znaleźć powodu tego samego. Tam jest o tym mowa „bardziej rozsądne jest, aby nie zwracał żadnej wartości i wymagał od klientów używania metody front () w celu sprawdzenia wartości na początku kolejki” Ale sprawdzenie elementu z front () wymagało również skopiowania tego elementu …
123 c++  stl 


10
Jak skopiować zawartość tablicy do std :: vector w C ++ bez zapętlania?
Mam tablicę wartości, które są przekazywane do mojej funkcji z innej części programu, którą muszę przechowywać do późniejszego przetworzenia. Ponieważ nie wiem, ile razy moja funkcja zostanie wywołana, zanim nadejdzie czas na przetworzenie danych, potrzebuję dynamicznej struktury pamięci, więc wybrałem plik std::vector. Nie chcę wykonywać standardowej pętli dla push_backwszystkich wartości …
122 c++  stl  vector  copy 


13
remove_if odpowiednik dla std :: map
Próbowałem usunąć szereg elementów z mapy w oparciu o określone warunki. Jak to zrobić za pomocą algorytmów STL? Początkowo myślałem o użyciu, remove_ifale nie jest to możliwe, ponieważ remove_if nie działa dla kontenera asocjacyjnego. Czy istnieje równoważny algorytm „remove_if”, który działa na mapie? Jako prostą opcję pomyślałem o przejściu mapy …
118 c++  stl  map 


4
Jak przeładować std :: swap ()
std::swap()jest używany przez wiele kontenerów standardowych (takich jak std::listi std::vector) podczas sortowania, a nawet przypisywania. Jednak standardowa implementacja programu swap()jest bardzo uogólniona i raczej nieefektywna dla typów niestandardowych. W ten sposób wydajność można uzyskać przez przeciążenie std::swap()implementacją specyficzną dla niestandardowego typu. Ale jak można go zaimplementować, aby był używany przez …

5
C ++ map Access odrzuca kwalifikatory (const)
Poniższy kod mówi, że przekazanie mapy as constdo operator[]metody powoduje odrzucenie kwalifikatorów: #include <iostream> #include <map> #include <string> using namespace std; class MapWrapper { public: const int &get_value(const int &key) const { return _map[key]; } private: map<int, int> _map; }; int main() { MapWrapper mw; cout << mw.get_value(42) << endl; …
113 c++  stl  const  maps 

9
Jaki jest preferowany / idiomatyczny sposób wstawiania do mapy?
Zidentyfikowałem cztery różne sposoby wstawiania elementów do std::map: std::map<int, int> function; function[0] = 42; function.insert(std::map<int, int>::value_type(0, 42)); function.insert(std::pair<int, int>(0, 42)); function.insert(std::make_pair(0, 42)); Który z nich jest preferowany / idiomatyczny? (Czy jest inny sposób, o którym nie pomyślałem?)
113 c++  stl  insert  stdmap  std-pair 

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.