Jakie klasy wyjątków są zawarte w standardowej bibliotece C ++ i do czego powinny być używane? Wiem, że jest kilka nowych wyjątków C ++ 11, ale nie jestem pewien, jakie one są ani gdzie się
Jakie klasy wyjątków są zawarte w standardowej bibliotece C ++ i do czego powinny być używane? Wiem, że jest kilka nowych wyjątków C ++ 11, ale nie jestem pewien, jakie one są ani gdzie się
Ile kosztuje narzut inteligentnych wskaźników w porównaniu do zwykłych wskaźników w C ++ 11? Innymi słowy, czy mój kod będzie wolniejszy, jeśli użyję inteligentnych wskaźników, a jeśli tak, to o ile wolniej? W szczególności pytam o C ++ 11 std::shared_ptri std::unique_ptr. Oczywiście rzeczy...
Załóżmy, że mam trzy skompilowane obiekty, wszystkie wyprodukowane przez ten sam kompilator / wersję : A został skompilowany w standardzie C ++ 11 B został skompilowany w standardzie C ++ 14 C został skompilowany w standardzie C ++ 17 Dla uproszczenia załóżmy, że wszystkie nagłówki zostały...
Piszę to chwilę temu: template <long int T_begin, long int T_end> class range_class { public: class iterator { friend class range_class; public: long int operator *() const { return i_; } const iterator &operator ++() { ++i_; return *this; } iterator operator ++(int) { iterator...
Jak mogę przekazać a std::unique_ptrdo funkcji? Powiedzmy, że mam następującą klasę: class A { public: A(int val) { _val = val; } int GetVal() { return _val; } private: int _val; }; Następujące elementy nie są kompilowane: void MyFunc(unique_ptr<A> arg) { cout <<...
Aby obsługiwać typy kluczy zdefiniowane przez użytkownika w programie std::unordered_set<Key>i std::unordered_map<Key, Value> należy podać operator==(Key, Key)funktor skrótu: struct X { int id; /* ... */ }; bool operator==(X a, X b) { return a.id == b.id; } struct MyHash { size_t...
C ++ nie ma odpowiednika słowa kluczowego PHPself , które ocenia typ otaczającej klasy. Łatwo jest sfałszować to na podstawie klasy: struct Foo { typedef Foo self; }; ale musiałem napisać Fooponownie. Może któregoś dnia się pomylę i wywołam cichy błąd. Czy mogę użyć kombinacji...
Jak mogę wyprowadzić wartość an enum classw C ++ 11? W C ++ 03 wygląda to tak: #include <iostream> using namespace std; enum A { a = 1, b = 69, c= 666 }; int main () { A a = A::c; cout << a << endl; } w c ++ 0x ten kod nie kompiluje się #include...
Próbuję użyć std :: regex w fragmencie kodu C ++ 11, ale wygląda na to, że obsługa jest trochę błędna. Przykład: #include <regex> #include <iostream> int main (int argc, const char * argv[]) { std::regex r("st|mt|tr"); std::cerr << "st|mt|tr" << " matches st? "...
W kilku różnych miejscach przeczytałem, że przy użyciu nowych literałów ciągów C ++ 11 może być możliwe obliczenie skrótu ciągu w czasie kompilacji. Jednak nikt nie wydaje się być gotowy, aby wyjść i powiedzieć, że będzie to możliwe i jak to się stanie. czy to możliwe? Jak wyglądałby...
Mam problemy ze zrozumieniem potrzeby std::result_ofw C ++ 0x. Jeśli dobrze zrozumiałem, result_ofsłuży do uzyskania wynikowego typu wywołania obiektu funkcji z określonymi typami parametrów. Na przykład: template <typename F, typename Arg> typename
Dzięki nowej pętli for opartej na zakresach możemy pisać kod podobny do for(auto x: Y) {} Która IMO jest ogromnym ulepszeniem (np.) for(std::vector<int>::iterator x=Y.begin(); x!=Y.end(); ++x) {} Czy można go użyć do zapętlenia dwóch równoczesnych pętli, jak zipfunkcja Pythona ? Dla...
Tworzymy oprogramowanie o wysokiej wydajności w języku C ++. Tam potrzebujemy współbieżnej mapy skrótów i zaimplementowanej. Dlatego napisaliśmy test porównawczy, aby dowiedzieć się, o ile wolniej jest porównywana nasza współbieżna mapa skrótów std::unordered_map. Ale std::unordered_mapwydaje się...
Czy jest jakaś różnica między throw()i noexceptinnymi niż bycie sprawdzanymi odpowiednio w czasie wykonywania i kompilacji? Ten artykuł w Wikipedii o C ++ 11 sugeruje, że specyfikatory rzutów C ++ 03 są przestarzałe. Dlaczego tak, jest w noexceptstanie pokryć to wszystko w czasie...
Dlaczego jest taka potrzeba std::reference_wrapper? Gdzie powinien być używany? Czym różni się od prostego wskaźnika? Jak jego wydajność wypada w porównaniu z prostym wskaźnikiem?
class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; Uważam, że powodem jest to, że tablice można zainicjować tylko za pomocą =składni, czyli: int arr[3] = {1,3,4}; pytania Jak mogę zrobić to, co chcę...
Według źródeł, które znalazłem, wyrażenie lambda jest zasadniczo implementowane przez kompilator, tworząc klasę z przeciążonym operatorem wywołania funkcji i zmiennymi, do których się odwołujemy jako składowymi. Sugeruje to, że rozmiar wyrażeń lambda jest różny, a przy wystarczającej liczbie...
Zastanawiałem się, jak prawidłowo sprawdzić, czy std::functionjest pusty. Rozważmy ten przykład: class Test { std::function<void(int a)> eventFunc; void registerEvent(std::function<void(int a)> e) { eventFunc = e; } void doSomething() { ... eventFunc(42); } }; Ten kod...
Czy mogę przenosić elementy z a std::initializer_list<T>? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher?...
Widziałem gdzieś kod, w którym ktoś zdecydował się skopiować obiekt, a następnie przenieść go do członka danych klasy. Wprawiło mnie to w zakłopotanie, ponieważ myślałem, że celem przeniesienia jest uniknięcie kopiowania. Oto przykład: struct S { S(std::string str) : data(std::move(str))...