Jaki jest właściwy sposób używania opartego na zakresie C ++ 11 for? Jakiej składni należy użyć? for (auto elem : container)lub for (auto& elem : container)lub for (const auto& elem : container)? A może jakiś inny?
Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2 To jest przykład fragmentu kodu C ++ 11: auto text = std::unique_ptr<char[]>(new char[len]); Edytor Eclipse narzeka na: Function 'unique_ptr' could not be resolved Kompilacja Makefile działa dobrze. Jak sprawić, by Eclipse przestał narzekać na tego rodzaju błędy?
Czy można przekazać funkcję lambda jako wskaźnik funkcji? Jeśli tak, to muszę robić coś niepoprawnie, ponieważ pojawia się błąd kompilacji. Rozważ następujący przykład using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn _dec; }; int main() { int x = 5; Decide greaterThanThree{ [x](){ …
Czasami twierdzi się, że C ++ 11/14 może zwiększyć wydajność, nawet po prostu kompilując kod C ++ 98. Uzasadnienie jest zwykle zgodne z semantyką ruchu, ponieważ w niektórych przypadkach konstruktory wartości są generowane automatycznie lub są teraz częścią STL. Teraz zastanawiam się, czy te przypadki były wcześniej obsługiwane przez RVO …
Każdy standardowy kontener ma metodę begini enddo zwracania iteratorów dla tego kontenera. Jednak C ++ 11 najwyraźniej wprowadził wolne funkcje o nazwie std::begini std::endktóre wywołują funkcje begini end. Zamiast pisać auto i = v.begin(); auto e = v.end(); piszesz auto i = std::begin(v); auto e = std::end(v); W swoim wystąpieniu, …
Może to być przykład: #include <iostream> using namespace std; int main() { cout << "Hola, moondo.\n"; } Zgłasza błąd: gcc -c main.cpp gcc -o edit main.o main.o: In function `main': main.cpp:(.text+0xa): undefined reference to `std::cout' main.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char,std::char_traits<char> >& std::operator<< <std::char_traits<char>>(std::basic_ostream<char, std::char_traits<char> >&, char const*)' main.o: In function …
Jeśli mam zmienną wewnątrz funkcji (powiedzmy, dużą tablicę), czy sens ma deklarowanie jej jednocześnie statici constexpr? constexprgwarantuje, że tablica jest tworzona w czasie kompilacji, więc czy staticbyłaby bezużyteczna? void f() { static constexpr int x [] = { // a few thousand elements }; // do something with the array …
Dzięki nowemu standardowi istnieją nowe sposoby robienia rzeczy, a wiele z nich jest ładniejszych niż stare sposoby, ale stary sposób jest nadal w porządku. Oczywiste jest również, że nowy standard nie jest oficjalnie bardzo przestarzały, ze względu na kompatybilność wsteczną. Pozostaje więc pytanie: Jakie stare sposoby kodowania są zdecydowanie gorsze …
Dlaczego funkcja odwrotna dla std::listklasy w standardowej bibliotece C ++ ma liniowe środowisko wykonawcze? Sądzę, że dla podwójnie powiązanych list funkcją odwrotną powinna być O (1). Odwrócenie podwójnie połączonej listy powinno po prostu obejmować zmianę wskaźników głowy i ogona.
Umieściłem swoje umiejętności C ++ na półce kilka lat temu i wydaje się, że kiedy znów ich potrzebuję, krajobraz się zmienił. Mamy teraz C ++ 11 i rozumiem, że nakłada się on na wiele funkcji Boost. Czy jest jakieś podsumowanie, gdzie leżą te nakładki, które biblioteki Boost staną się starsze, …
[dcl.attr.noreturn] podaje następujący przykład: [[ noreturn ]] void f() { throw "error"; // OK } ale nie rozumiem, o co chodzi [[noreturn]], ponieważ typ zwracanej funkcji już jest void. Jaki jest sens tego noreturnatrybutu? Jak ma być używany?
Zastanawiam się, dlaczego cbegini cendzostały wprowadzone w C ++ 11? Jakie są przypadki, gdy wywołanie tych metod różni się od stałych przeciążeń begini end?
Mam ten kod, który nie działa, ale myślę, że cel jest jasny: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &) = delete; }; ::std::shared_ptr<A> foo() { return A::create(); } Ale …
Chcę mieć static const chartablicę w mojej klasie. GCC narzekało i powiedziało mi, że powinienem skorzystać constexpr, chociaż teraz mówi mi, że to niezdefiniowane odniesienie. Jeśli ustawię tablicę jako nie będącą członkiem, wówczas się kompiluje. Co się dzieje? // .hpp struct foo { void bar(); static constexpr char baz[] = …
Wraz z nadejściem nowego standardu (i części już dostępnych w niektórych kompilatorach) nowy typ std::unique_ptrma być zamiennikiem std::auto_ptr. Czy ich użycie dokładnie się pokrywa (więc mogę dokonać globalnego wyszukiwania / zamiany w moim kodzie (nie żebym to zrobił, ale gdybym to zrobił)), czy powinienem być świadomy pewnych różnic, które nie …
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.