W języku programowania C ++ biblioteka standardowa C ++ to zbiór klas i funkcji, które mogą, ale nie muszą być napisane w języku podstawowym i są częścią C ++
Chcę przekonwertować std::stringna małe litery. Zdaję sobie sprawę z tej funkcji tolower(), jednak w przeszłości miałem problemy z tą funkcją i nie jest ona idealna, ponieważ używa się jej zstd::string wymagałoby iteracji nad każdą postacią. Czy istnieje alternatywa, która działa w 100% przypadków?
Ktoś zwrócił moją uwagę na ten artykuł, który twierdzi (parafrazuję), że termin STL jest niewłaściwie używany w odniesieniu do całej Standardowej Biblioteki C ++ zamiast części, które zostały zaczerpnięte z SGI STL. (...) odnosi się do „STL”, mimo że bardzo niewiele osób nadal korzysta z STL (który został zaprojektowany w …
Bardzo lubię wektory. Są sprytne i szybkie. Ale wiem, że istnieje coś takiego jak valarray. Dlaczego miałbym używać valarray zamiast wektora? Wiem, że valarrays mają trochę cukru syntaktycznego, ale poza tym, kiedy są przydatne?
Ta odpowiedź daje ładny, ogólny przegląd optymalizacji krótkich ciągów (SSO). Chciałbym jednak dowiedzieć się bardziej szczegółowo, jak to działa w praktyce, szczególnie w implementacji libc ++: Jak krótki musi być ciąg znaków, aby kwalifikować się do logowania jednokrotnego? Czy to zależy od docelowej architektury? W jaki sposób implementacja rozróżnia krótkie …
Czy istnieją pułapki związane z określonymi systemami operacyjnymi, o których powinienem wiedzieć? Istnieje wiele duplikatów ( 1 , 2 , 3 , 4 , 5 ) tego pytania, ale odpowiedź na nie została udzielona dziesiątki lat temu. Bardzo wysoko ocenione odpowiedzi na wiele z tych pytań są dziś błędne. Metody …
Co oznacza fraza std::string::nposw poniższym fragmencie kodu? found = str.find(str2); if (found != std::string::npos) std::cout << "first 'needle' found at: " << int(found) << std::endl;
Sekcja 23.3.7 Klasa vector<bool>[vector.bool], akapit 1 stwierdza: template <class Allocator> class vector<bool, Allocator> { public: // types: typedef bool const_reference; ... Jednak ten program nie kompiluje się podczas korzystania z libc ++: #include <vector> #include <type_traits> int main() { static_assert(std::is_same<std::vector<bool>::const_reference, bool>{}, "?"); } Ponadto zauważam, że standard C ++ był …
Mam projekt, który obecnie używa C ++ 11/14, ale wymaga czegoś takiego std::filesystem, co jest dostępne tylko w C ++ 17, stąd nie mam szansy, aby go obecnie używać. Widzę jednak, że jest dostępny w moim obecnym kompilatorze jako std::experimental::filesystem. Czy warto korzystać z funkcji eksperymentalnych, zakładając, że w przyszłości …
Przypadek użycia pojawił się, gdy chcieliśmy wykonać kopię warunkową (1. wykonalna z copy_if), ale z kontenera wartości do kontenera wskaźników do tych wartości (2. wykonalne z transform). Z dostępnymi narzędziami nie mogę tego zrobić w mniej niż dwóch krokach: #include <vector> #include <algorithm> using namespace std; struct ha { int …
Zgodnie z cppreference , std::type_info::operator!=zostaje usunięty z C ++ 20, jednak std::type_info::operator==najwyraźniej pozostaje. Jakie jest uzasadnienie? Mógłbym się zgodzić na to, że porównywanie nierówności byłoby pozbawione sensu, ale wtedy porównywanie dla równości byłoby równie samo pozbawione znaczenia, prawda? Podobnie, operator!=wiele innych standardowych typów bibliotek, w tym kontenery takie jak std::unordered_map::operator!=i …
Czy istnieje sposób sprawdzenia, czy dwie funkcje mają taki sam podpis? Na przykład: int funA (int a, int b); int funB (int a, int b); float funC (int a, int b); int funD (float a, int b); W tym przykładzie, funAi funBjest jedynym połączeniem funkcji, które powinny powrócić true.
Uważam zachowanie std::string::find jest niespójne ze standardowymi kontenerami C ++. Na przykład std::map<int, int> myMap = {{1, 2}}; auto it = myMap.find(10); // it == myMap.end() Ale dla sznurka std::string myStr = "hello"; auto it = myStr.find('!'); // it == std::string::npos Dlaczego zamiast nieudanego myStr.find('!')powrotu ?myStr.end()std::string::npos Ponieważ std::stringjest to coś …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.