C ++ 11 zezwala na inline namespaces, których wszyscy członkowie są również automatycznie dołączani namespace. Nie mogę wymyślić żadnego przydatnego zastosowania tego - czy ktoś mógłby podać krótki, zwięzły przykład sytuacji, w której jest inline namespaceto potrzebne i gdzie jest to najbardziej idiomatyczne rozwiązanie? (Poza tym nie jest dla mnie …
Czy istnieje adapter kontenera, który odwróciłby kierunek iteratorów, dzięki czemu mogę iterować po kontenerze w odwrotnej kolejności za pomocą pętli for opartej na zakresie? Za pomocą jawnych iteratorów przekonwertowałbym to: for (auto i = c.begin(); i != c.end(); ++i) { ... zaangażowany w to: for (auto i = c.rbegin(); i …
Czy istnieje różnica między następującymi definicjami? const double PI = 3.141592653589793; constexpr double PI = 3.141592653589793; Jeśli nie, jaki styl jest preferowany w C ++ 11?
Czy jest możliwe, aby kod C ++ był zgodny zarówno ze standardem C ++ 03, jak i standardem C ++ 11 , ale robi różne rzeczy w zależności od tego, w ramach którego standardu jest kompilowany?
Próbuję zbudować std::threadz funkcją członka, która nie przyjmuje argumentów i zwraca void. Nie mogę znaleźć żadnej składni, która działa - kompilator narzeka bez względu na wszystko. Jaki jest prawidłowy sposób zaimplementowania spawn(), std::threadaby zwracał wykonanie test()? #include <thread> class blub { void test() { } public: std::thread spawn() { return …
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); Wiele postów z Google i Stackoverflow jest na ten temat, ale nie jestem w stanie zrozumieć, dlaczego make_sharedjest bardziej wydajny niż bezpośrednie korzystanie shared_ptr. Czy ktoś może mi wyjaśnić krok po kroku sekwencję obiektów utworzonych i operacji wykonanych przez oba, aby móc zrozumieć, …
Ostatnio natknąłem się na następujący ezoteryczny fragment kodu. int main(){(([](){})());} Sformatuj go w następujący sposób, aby był bardziej czytelny: int main(){ (([](){})()); // Um... what?!?! } Ale nie mogę się zastanowić, jak (([](){})())ważny jest kod. Nie wygląda na składnię wskaźnika funkcji. To nie może być jakiś sposób na przeciążenie operatora. …
Gdy funkcja przyjmuje wartość shared_ptr (z boost lub C ++ 11 STL), przekazujesz ją: według stałej referencji: void foo(const shared_ptr<T>& p) lub według wartości void foo(shared_ptr<T> p):? Wolałbym pierwszą metodę, ponieważ podejrzewam, że byłaby szybsza. Ale czy to naprawdę jest tego warte, czy są jakieś dodatkowe problemy? Czy możesz podać …
Nie zadaję tego pytania przede wszystkim ze względu na zalety zbierania śmieci. Moim głównym powodem, dla którego o to pytam, jest to, że wiem, że Bjarne Stroustrup powiedział, że C ++ będzie miało w pewnym momencie moduł wyrzucający śmieci. To powiedziawszy, dlaczego nie zostało dodane? Istnieje już kilka śmieciarek dla …
Zacząłem studiować inteligentne wskaźniki C ++ 11 i nie widzę pożytecznego zastosowania std::weak_ptr. Czy ktoś może mi powiedzieć, kiedy std::weak_ptrjest przydatny / konieczny?
Próbuję zapisać w std::tuplezmiennej liczbie wartości, które później zostaną użyte jako argumenty wywołania wskaźnika funkcji, który pasuje do przechowywanych typów. Stworzyłem uproszczony przykład pokazujący problem, który staram się rozwiązać: #include <iostream> #include <tuple> void f(int a, double b, void* c) { std::cout << a << ":" << b << ":" …
Jak wiele osób próbuję obecnie różnych funkcji, które oferuje C ++ 11. Jednym z moich ulubionych jest „oparte na zakresie pętle”. Rozumiem, że: for(Type& v : a) { ... } Jest równa: for(auto iv = begin(a); iv != end(a); ++iv) { Type& v = *iv; ... } A to begin()po …
Mam trochę kodu w nagłówku, który wygląda następująco: #include <memory> class Thing; class MyClass { std::unique_ptr< Thing > my_thing; }; Jeśli dołączę ten nagłówek do cpp, który nie zawiera Thingdefinicji typu, wówczas nie kompiluje się w VS2010-SP1: 1> C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC …
Tworzę mały program do zapamiętywania słownictwa, w którym słowa byłyby dla mnie przypadkowo błyskane dla znaczeń. Chcę używać standardowej biblioteki C ++, jak mówi nam Bjarne Stroustroup, ale natknąłem się na pozornie dziwny problem od samego początku. Chcę zmienić longliczbę całkowitą na std::string, aby móc zapisać ją w pliku. Pracowałem …
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.