class my_class { ... my_class(my_class const &) = delete; ... }; Co = deleteznaczy w tym kontekście? Czy są jakieś inne „modyfikatory” (inne niż = 0i = delete)?
Natrafiłem na propozycję o nazwie „odwołanie do wartości dla * this” na stronie statusu C ++ 11 clanga . Czytałem sporo o referencjach do wartości i je rozumiałem, ale nie wiem o tym. Nie mogłem też znaleźć wielu zasobów w Internecie, używając tych warunków. Na stronie znajduje się link do …
std::unique_ptr obsługuje tablice, na przykład: std::unique_ptr<int[]> p(new int[10]); ale czy jest to potrzebne? prawdopodobnie jest wygodniejszy w użyciu std::vectorlub std::array. Czy znajdujesz zastosowanie dla tego konstruktu?
Znalazłem interesującą regresję wydajności w małym fragmencie kodu C ++, gdy włączę C ++ 11: #include <vector> struct Item { int a; int b; }; int main() { const std::size_t num_items = 10000000; std::vector<Item> container; container.reserve(num_items); for (std::size_t i = 0; i < num_items; ++i) { container.push_back(Item()); } return 0; …
Wektory C ++ 11 mają nową funkcję emplace_back. W przeciwieństwie do tego push_back, który polega na optymalizacji kompilatora w celu uniknięcia kopiowania, emplace_backwykorzystuje doskonałe przekazywanie, aby wysyłać argumenty bezpośrednio do konstruktora w celu utworzenia obiektu w miejscu. Wydaje mi się, że emplace_backwszystko push_backrobi, ale czasami zrobi to lepiej (ale nigdy …
Rozumiem, dlaczego autotyp w C ++ 11 poprawia poprawność i łatwość konserwacji. Czytałem, że może to również poprawić wydajność ( Prawie zawsze auto autorstwa Herb Sutter), ale brakuje mi dobrego wyjaśnienia. Jak autopoprawić wydajność? Czy ktoś może podać przykład?
Czy w C ++ 11 można utworzyć szablon funkcji lambda? Czy może jest zbyt specyficzny, aby można go było zastosować w szablonie? Rozumiem, że zamiast tego mogę zdefiniować klasyczną szablonową klasę / funktor, ale pytanie brzmi bardziej: czy język pozwala na tworzenie szablonów funkcji lambda?
Ok, więc ostatnim razem, gdy pisałem C ++ na życie, std::auto_ptrbyło wszystko, co było dostępne w standardowej wersji lib, i to boost::shared_ptrbyła wściekłość. Nigdy tak naprawdę nie przyglądałem się innym dostępnym rodzajom inteligentnych wskaźników. Rozumiem, że C ++ 11 zapewnia teraz niektóre typy ulepszeń, ale nie wszystkie. Czy ktoś ma …
Wiem, że przynajmniej jedna ze zmian w C ++ 11, która spowoduje, że jakiś stary kod przestanie się kompilować: wprowadzenie explicit operator bool()do standardowej biblioteki, zastępujące stare instancje operator void*(). To prawda, że kod, który to zepsuje, jest prawdopodobnie kodem, który nie powinien był być poprawny, ale nadal jest przełomową …
O ile rozumiem, wprowadzenie overridesłowa kluczowego w C ++ 11 jest niczym innym jak tylko sprawdzeniem, czy zaimplementowana funkcja jest overrideing virtualfunkcji w klasie bazowej. Czy to to?
Widziałem defaultużywane obok deklaracji funkcji w klasie. Co to robi? class C { C(const C&) = default; C(C&&) = default; C& operator=(const C&) & = default; C& operator=(C&&) & = default; virtual ~C() { } };
Używam nowego autosłowa kluczowego dostępnego w standardzie C ++ 11 do skomplikowanych typów szablonów, do czego, moim zdaniem, został zaprojektowany. Ale używam go również do takich rzeczy jak: auto foo = std::make_shared<Foo>(); I bardziej sceptycznie dla: auto foo = bla(); // where bla() return a shared_ptr<Foo> Nie widziałem wiele dyskusji …
Co jest nie tak z tym programem? #include <memory> #include <vector> int main() { std::vector<std::unique_ptr<int>> vec; int x(1); std::unique_ptr<int> ptr2x(&x); vec.push_back(ptr2x); //This tiny command has a vicious error. return 0; } Błąd: In file included from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/mingw32/bits/c++allocator.h:34:0, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/allocator.h:48, from c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/memory:64, from main.cpp:6: c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/bits/unique_ptr.h: In member function 'void __gnu_cxx::new_allocator<_Tp>::construct(_Tp*, const …
Dlaczego std::make_uniquew standardowej bibliotece C ++ 11 nie ma szablonu funkcji? znajduję std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3)); trochę gadatliwy. Czy poniższe rzeczy nie byłyby o wiele ładniejsze? auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3); To newładnie ukrywa i wspomina o typie tylko raz. Tak czy inaczej, oto moja próba wdrożenia make_unique: …
Czytając niektóre przykłady pętli opartych na zakresie, sugerują dwa główne sposoby 1 , 2 , 3 , 4 std::vector<MyClass> vec; for (auto &x : vec) { // x is a reference to an item of vec // We can change vec's items by changing x } lub for (auto x …
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.