Rozumiem, że volatileinformuje kompilator, że wartość może ulec zmianie, ale czy aby wykonać tę funkcję, kompilator musi wprowadzić ogrodzenie pamięci, aby działało? Z mojego zrozumienia, sekwencji operacji na obiektach ulotnych nie można zmienić i należy ją zachować. Wydaje się to sugerować, że niektóre ogrodzenia pamięci są konieczne i nie ma …
Czy istnieje różnica między tymi dwoma segmentami kodu: void f() { thread_local vector<int> V; V.clear(); ... // use V as a temporary variable } i void f() { static thread_local vector<int> V; V.clear(); ... // use V as a temporary variable } Backstory: pierwotnie miałem wektor STATIC V (do przechowywania …
Po pokrewnym pytaniu chciałbym zapytać o nowe typy literałów znakowych i łańcuchowych w C ++ 11. Wygląda na to, że mamy teraz cztery rodzaje znaków i pięć rodzajów literałów tekstowych. Typy postaci: char a = '\x30'; // character, no semantics wchar_t b = L'\xFFEF'; // wide character, no semantics char16_t …
Czy można określić liczność c ++ enum class: enum class Example { A, B, C, D, E }; Próbowałem jednak użyć funkcji sizeofzwracającej rozmiar elementu wyliczeniowego. sizeof(Example); // Returns 4 (on my architecture) Czy istnieje standardowy sposób uzyskania liczności (w moim przykładzie 5)?
c ++ 11 ma możliwość pobrania bieżącego id wątku, ale nie można go rzutować na typ całkowity: cout<<std::this_thread::get_id()<<endl; wyjście: 139918771783456 cout<<(uint64_t)std::this_thread::get_id()<<endl; błąd: nieprawidłowe rzutowanie z typu „std :: thread :: id” do typu „uint64_t” to samo dla innych typów: nieprawidłowe rzutowanie z typu „std :: thread :: id” do typu …
Jak mogę posortować dwa wektory w ten sam sposób, stosując kryteria, które używają tylko jednego z wektorów? Na przykład załóżmy, że mam dwa wektory o tym samym rozmiarze: vector<MyObject> vectorA; vector<int> vectorB; Następnie sortuję, vectorAużywając funkcji porównania. To sortowanie zostało zmienione vectorA. Jak mogę zastosować tę samą zmianę kolejności vectorB? …
Mam pierwszą próbę użycia C ++ 11 unique_ptr; Zastępuję polimorficzny surowy wskaźnik wewnątrz mojego projektu, który jest własnością jednej klasy, ale jest często przekazywany. Kiedyś miałem takie funkcje, jak: bool func(BaseClass* ptr, int other_arg) { bool val; // plain ordinary function that does something... return val; } Ale szybko zdałem …
Jaki jest właściwy sposób definiowania funkcji, która otrzymuje int->intparametr lambda przez odniesienie? void f(std::function< int(int) >& lambda); lub void f(auto& lambda); Nie jestem pewien, czy ostatnia forma jest nawet legalną składnią. Czy istnieją inne sposoby definiowania parametru lambda?
Jak mogę sprawdzić, czy std::threadnadal działa (w sposób niezależny od platformy)? Brakuje mu timed_join()metody i joinable()nie jest do tego przeznaczona. Myślałem o zablokowaniu muteksu za pomocą a std::lock_guardw wątku i użyciu try_lock()metody muteksu w celu określenia, czy nadal jest zablokowany (wątek działa), ale wydaje mi się to niepotrzebnie skomplikowane. Czy …
Obecnie mogę wykonywać tylko pętle dystansowe za pomocą tego: for (auto& value : values) Ale czasami potrzebuję iteratora do wartości zamiast odniesienia (z dowolnego powodu). Czy jest jakaś metoda bez konieczności porównywania wartości przez cały wektor?
Jestem początkującym w programowaniu w C ++. Dziś trafiłem na nowy temat: mocno wpisany enum. Trochę to zbadałem, ale do tej pory nie jestem w stanie dowiedzieć się, dlaczego tego potrzebujemy i jaki jest pożytek z tego samego? Na przykład, jeśli mamy: enum xyz{a, b, c}; /*a = 0, b …
Po prostu bawiłem się g ++ 4.7 (jedną z późniejszych migawek) z włączoną opcją -std = c ++ 11. Próbowałem skompilować część mojego istniejącego kodu i jeden przypadek, który się nie powiódł, nieco mnie zmylił. Byłbym wdzięczny, gdyby ktoś mógł wyjaśnić, co się dzieje. Oto kod: #include <utility> #include <iostream> …
Jaki jest prawidłowy sposób ponownego wykorzystania przeniesionego kontenera? std::vector<int> container; container.push_back(1); auto container2 = std::move(container); // ver1: Do nothing //container2.clear(); // ver2: "Reset" container = std::vector<int>() // ver3: Reinitialize container.push_back(2); assert(container.size() == 1 && container.front() == 2); Z tego, co przeczytałem w wersji roboczej standardu C ++ 0x; ver3 wydaje …
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się tylko na jednym problemie, edytując ten post . Zamknięte 3 lata temu . Popraw to pytanie Pewnego dnia pokłóciłem się z przyjacielem o te dwa fragmenty. Co jest …
Jak wiemy, przepełnienie liczb całkowitych ze znakiem jest niezdefiniowanym zachowaniem . Ale w cstdintdokumentacji C ++ 11 jest coś interesującego : typ liczby całkowitej ze znakiem o szerokości odpowiednio 8, 16, 32 i 64 bitów bez wypełniania bitów i przy użyciu dopełnienia 2 dla wartości ujemnych (podany tylko wtedy, gdy …
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.