Mam klasę z członkiem unique_ptr. class Foo { private: std::unique_ptr<Bar> bar; ... }; Bar jest klasą strony trzeciej, która ma funkcje create () i niszczą (). Gdybym chciał użyć std::unique_ptrz nim jako samodzielnej funkcji, mógłbym zrobić: void foo() { std::unique_ptr<Bar, void(*)(Bar*)> bar(create(), [](Bar* b){ destroy(b); }); ... } Czy można …
Nie rozumiem, dlaczego miałbym to zrobić: struct S { int a; S(int aa) : a(aa) {} S() = default; }; Dlaczego po prostu nie powiedzieć: S() {} // instead of S() = default; po co wprowadzać do tego nową składnię?
Rozważmy przypadek funkcji opartej na szablonie z różnymi argumentami szablonu: template<typename Tret, typename... T> Tret func(const T&... t); Teraz mam krotkę twartości. Jak wywołać, func()używając wartości krotki jako argumentów? Czytałem o bind()obiekcie funkcji, z call()funkcją, a także o apply()funkcji w różnych, nieaktualnych, dokumentach. Wydaje się, że implementacja GNU GCC 4.4 …
Jak sugeruje tytuł, próbuję wymyślić sposób generowania liczb losowych za pomocą nowej <random>biblioteki C ++ 11 . Wypróbowałem to z tym kodem: std::default_random_engine generator; std::uniform_real_distribution<double> uniform_distance(1, 10.001); Problem z kodem, który mam, polega na tym, że za każdym razem, gdy go kompiluję i uruchamiam, generuje zawsze te same liczby. Więc …
Czy biorąc pod uwagę lambdę, można określić typ jej parametru i typ zwracany? Jeśli tak, w jaki sposób? Zasadniczo chcę, aby lambda_traitsmożna było używać na następujące sposoby: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should be int lambda_traits<decltype(lambda)>::return_type l; //l should be long Motywacją jest …
Jest dobrze znany obraz (ściągawka) o nazwie „Wybór kontenera w C ++”. Jest to schemat blokowy wyboru najlepszego pojemnika do zamierzonego zastosowania. Czy ktoś wie, czy istnieje już wersja C ++ 11 tego? To jest poprzednie:
Czy to prawda, że C ++ 0x przyjdzie bez semaforów? Istnieje już kilka pytań dotyczących przepełnienia stosu dotyczących używania semaforów. Używam ich (semaforów posix) cały czas, aby pozwolić wątkowi czekać na jakieś zdarzenie w innym wątku: void thread0(...) { doSomething0(); event1.wait(); ... } void thread1(...) { doSomething1(); event1.post(); ... } …
Jestem zdezorientowany z opisem thread_localw C ++ 11. Rozumiem, że każdy wątek ma unikalną kopię zmiennych lokalnych w funkcji. Dostęp do zmiennych globalnych / statycznych można uzyskać we wszystkich wątkach (prawdopodobnie dostęp zsynchronizowany za pomocą blokad). A thread_localzmienne są widoczne dla wszystkich wątków, ale mogą być modyfikowane tylko przez wątek, …
Jakie są różnice między parametrami kompilacji -std=c++11i -std=gnu++11jako parametrami gcc i clang? To samo pytanie z c99i gnu99? Wiem o standardach C ++ i C, interesują mnie różnice w parametrach. Czytałem gdzieś, że ma to związek z niektórymi rozszerzeniami, ale nie jest dla mnie jasne, które z nich i jak …
Czy std::make_uniquema jakieś korzyści związane z wydajnością std::make_shared? W porównaniu z tworzeniem ręcznym std::unique_ptr: std::make_unique<int>(1); // vs std::unique_ptr<int>(new int(1));
Wiem, czym są funktory i kiedy używać ich z stdalgorytmami, ale nie rozumiem, co mówi o nich Stroustrup w C ++ 11 FAQ . Czy ktoś może wyjaśnić, co std::bindi std::functionkiedy należy ich używać, i podać przykłady dla początkujących?
Znalazłem kod używający std :: shared_ptr do wykonania dowolnego czyszczenia przy wyłączaniu. Na początku myślałem, że ten kod nie może działać, ale potem wypróbowałem następujące: #include <memory> #include <iostream> #include <vector> class test { public: test() { std::cout << "Test created" << std::endl; } ~test() { std::cout << "Test destroyed" …
Natknąłem się na następujący kod: template <typename T, typename T1> auto compose(T a, T1 b) -> decltype(a + b) { return a+b; } Nie mogę zrozumieć jednej rzeczy: Gdzie mogę się dowiedzieć, co oznacza operator strzałki ( ->) w nagłówku funkcji? Myślę, że czysto logicznie, że ->operator określa typ, do …
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.