Zaktualizowano, patrz poniżej! Słyszałem i przeczytałem, że C ++ 0x umożliwia kompilatorowi wydrukowanie „Hello” dla następującego fragmentu kodu #include <iostream> int main() { while(1) ; std::cout << "Hello" << std::endl; } Najwyraźniej ma to coś wspólnego z wątkami i możliwościami optymalizacji. Wydaje mi się jednak, że może to zaskoczyć wielu …
Motywacja: powód, dla którego rozważam to, że mój genialny kierownik projektu uważa, że doładowanie jest kolejną zależnością i że jest okropne, ponieważ "jesteś od niego zależny" (próbowałem wyjaśnić jakość wzmocnienia, ale po pewnym czasie zrezygnowałem :( Mniejszym powodem, dla którego chciałbym to zrobić, jest to, że chciałbym nauczyć się funkcji …
Załóżmy, że zaczynam std::threada detach(), więc wątek kontynuuje wykonywanie, mimo że ten, std::threadktóry kiedyś go reprezentował, wykracza poza zakres. Załóżmy ponadto, że program nie ma niezawodnego protokołu do przyłączania się do odłączonego wątku 1 , więc odłączony wątek nadal działa po zakończeniu main(). Nie mogę znaleźć niczego w standardzie (a …
Przeglądałem kod źródłowy Clang i znalazłem ten fragment: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Dlaczego miałbym chcieć ?std::movestd::shared_ptr Czy jest jakiś sens przenoszenia własności do udostępnionego zasobu? Dlaczego nie miałbym po prostu tego zrobić? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = Value; }
Rozważmy ten kod w C ++ 11: enum class Color : char { red = 0x1, yellow = 0x2 } // ... char *data = ReadFile(); Color color = static_cast<Color>(data[0]); Załóżmy, że dane [0] to w rzeczywistości 100. Jaki jest kolor ustawiony zgodnie ze standardem? W szczególności, jeśli później to …
Zakładam, że „i” jest przyrostem, a „a” jest przypisane, ale nie mogłem znaleźć odpowiedzi. Ponadto wygląda bardzo podobnie do niestandardowego, itoaco moim zdaniem jest mylące.
Poniższy kod kompiluje się z gcc 4.5.1, ale nie z VS2010 SP1: #include <iostream> #include <vector> #include <map> #include <utility> #include <set> #include <algorithm> using namespace std; class puzzle { vector<vector<int>> grid; map<int,set<int>> groups; public: int member_function(); }; int puzzle::member_function() { int i; for_each(groups.cbegin(),groups.cend(),[grid,&i](pair<int,set<int>> group){ i++; cout<<i<<endl; }); } int …
Z całego materiału, którego używałem do nauki C ++, autozawsze był dziwny specyfikator czasu przechowywania, który nie służył żadnemu celowi. Ale niedawno napotkałem kod, który używał go jako nazwy typu. Spróbowałem z ciekawości i przyjmuje on rodzaj tego, co mu przydzielę! Nagle iteratory STL i, cóż, wszystko, co używa szablonów, …
Wprowadzamy C ++ 0x, unordered_setktóry jest dostępny w boostwielu innych miejscach. Rozumiem, że unordered_setjest to tabela skrótów ze O(1)złożonością wyszukiwania. Z drugiej strony setto nic innego jak drzewo o log(n)złożoności wyszukiwania. Dlaczego, u licha, ktoś miałby używać setzamiast unordered_set? tj. czy jest już taka potrzeba set?
Jaka logika kryje się za słowem kluczowym „using” w C ++? Jest używany w różnych sytuacjach i staram się sprawdzić, czy wszystkie mają ze sobą coś wspólnego i istnieje powód, dla którego słowo kluczowe „using” jest używane jako takie. using namespace std; // to import namespace in the current namespace …
Wygląda na to, że autobyła to dość istotna funkcja do dodania w C ++ 11, która wydaje się być zgodna z wieloma nowszymi językami. Podobnie jak w przypadku języka takiego jak Python, nie widziałem żadnej jawnej deklaracji zmiennej (nie jestem pewien, czy jest to możliwe przy użyciu standardów Pythona). Czy …
Jaki jest cel finalsłowa kluczowego w C ++ 11 dla funkcji? Rozumiem, że zapobiega to zastępowaniu funkcji przez klasy pochodne, ale jeśli tak jest, czy nie wystarczy zadeklarować funkcje niewirtualne jako niewirtualne final? Czy jest coś, czego tu brakuje?
Jestem nowy w C ++ 11. Piszę następującą rekurencyjną funkcję lambda, ale nie kompiluje się. sum.cpp #include <iostream> #include <functional> auto term = [](int a)->int { return a*a; }; auto next = [](int a)->int { return ++a; }; auto sum = [term,next,&sum](int a, int b)mutable ->int { if(a>b) return 0; …
W tradycyjnym C ++ przekazywanie wartości do funkcji i metod jest powolne w przypadku dużych obiektów i generalnie jest źle widziane. Zamiast tego programiści C ++ mają tendencję do przekazywania referencji, co jest szybsze, ale wprowadza różnego rodzaju skomplikowane pytania dotyczące własności, a zwłaszcza zarządzania pamięcią (w przypadku, gdy obiekt …
Miałem wrażenie, że typ lambda to wskaźnik funkcji. Kiedy wykonałem następujący test, stwierdziłem, że jest źle ( demo ). #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; // ok assert(typeid(pFptr) == typeid(pAuto)); // …
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.