Przeczytałem i słyszałem, że C ++ 11 obsługuje Unicode. Kilka pytań na ten temat: Jak dobrze standardowa biblioteka C ++ obsługuje Unicode? Robi std::string robi to, co powinien? Jak z tego korzystać? Gdzie są potencjalne problemy?
Ta odpowiedź @R. Martinho Fernandes pokazuje, że idiom bezpieczny jest przestarzały w C ++ 11, ponieważ można go zastąpić prostym explicit operator bool() const; zgodnie ze standardowym cytatem w odpowiedzi §4 [conv] p3: Wyrażenie e można domyślnie przekonwertować na typ Twtedy i tylko wtedy, gdy deklaracja T t=e;jest poprawnie sformułowana, …
Jak usunąć z mapy podczas iteracji? lubić: std::map<K, V> map; for(auto i : map) if(needs_removing(i)) // remove it from the map Jeśli map.erasego użyję, unieważni iteratory
Używając C ++ 11, Ubuntu 14.04, domyślnego łańcucha narzędzi GCC . Ten kod nie działa: constexpr std::string constString = "constString"; błąd: typ 'const string {aka const std :: basic_string}' zmiennej constexpr 'constString' nie jest dosłowny ... ponieważ ... 'std :: basic_string' ma nietrywialny destruktor Czy można użyć std::stringw constexpr? (najwyraźniej …
Rozumiem, że std::atomic<>jest to obiekt atomowy. Ale do jakiego stopnia atomowa? W moim rozumieniu operacja może być atomowa. Co dokładnie oznacza uczynienie obiektu atomowym? Na przykład, jeśli istnieją dwa wątki współbieżnie wykonujące następujący kod: a = a + 12; Czy zatem cała operacja (powiedzmy add_twelve_to(int)) jest atomowa? Czy też są …
Tylko małe zapytanie dotyczące shared_ptr. Czy warto shared_ptrwskazać tablicę? Na przykład, shared_ptr<int> sp(new int[10]); Jeśli nie, to dlaczego nie? Jednym z powodów, o których już wiem, jest to, że nie można zwiększać / zmniejszać wartości shared_ptr. Dlatego nie może być używany jako normalny wskaźnik do tablicy.
W swojej książce The C++ Standard Library (Second Edition)Nicolai Josuttis stwierdza, że kompilator może lepiej zoptymalizować lambdy niż zwykłe funkcje. Ponadto kompilatory C ++ optymalizują lambdy lepiej niż zwykłe funkcje. (Strona 213) Dlaczego? Pomyślałem, że jeśli chodzi o inlining, nie powinno już być żadnej różnicy. Jedynym powodem, dla którego mogłem …
Jest dość głupi problem z liczbą pi w C i C ++. O ile wiem, M_PIdefinicja w math.hnie jest wymagana przez żaden standard. Nowe normy C ++ wprowadzono wiele skomplikowanych matematycznych w bibliotece standardowej - funkcje hiperboliczne, std::hermitei std::cyl_bessel_i, różnych generatorów liczb losowych i tak dalej i tak dalej. Czy …
W pięknej odpowiedzi na idiom `` kopiuj i zamień '' jest fragment kodu, potrzebuję trochę pomocy: class dumb_array { public: // ... friend void swap(dumb_array& first, dumb_array& second) // nothrow { using std::swap; swap(first.mSize, second.mSize); swap(first.mArray, second.mArray); } // ... }; i dodaje notatkę Istnieją inne twierdzenia, że powinniśmy specjalizować …
Dla jednej klasy chcę przechowywać niektóre wskaźniki funkcji do funkcji składowych tej samej klasy w jednej mapprzechowującej std::functionobiekty. Ale zawodzę na samym początku z tym kodem: class Foo { public: void doSomething() {} void bindFunction() { // ERROR std::function<void(void)> f = &Foo::doSomething; } }; Otrzymuję error C2064: term does not …
Pierwotnie opublikowałem to jako pytanie tylko o destruktory, ale teraz dodaję do rozważenia domyślnego konstruktora. Oto oryginalne pytanie: Jeśli chcę dać mojej klasie destruktor, który jest wirtualny, ale poza tym jest taki sam, jak wygenerowałby kompilator, mogę użyć =default: class Widget { public: virtual ~Widget() = default; }; Wygląda jednak …
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.