Zacząłem wypróbowywać standard C ++ 11 i znalazłem to pytanie, które opisuje, jak wywołać twojego ctora z innego ctora w tej samej klasie, aby uniknąć posiadania metody init lub podobnej. Teraz próbuję tego samego z kodem, który wygląda następująco: hpp: class Tokenizer { public: Tokenizer(); Tokenizer(std::stringstream *lines); virtual ~Tokenizer() {}; …
W C ++ 11 mamy nową składnię do inicjowania klas, która daje nam dużą liczbę możliwości inicjalizacji zmiennych. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; std::complex<double> c = {3,4}; auto d = …
Chciałbym uzyskać informacje o tym, jak poprawnie myśleć o domknięciach std::functionw C ++ 11 oraz o tym, jak są one implementowane i jak obsługiwana jest pamięć. Chociaż nie wierzę w przedwczesną optymalizację, mam zwyczaj uważnego rozważania wpływu moich wyborów na wydajność podczas pisania nowego kodu. Zajmuję się również sporą ilością …
Otrzymuję błąd C ++ z wątkami: terminate called without an active exception Aborted Oto kod: #include <queue> #include <thread> #include <mutex> #include <condition_variable> template<typename TYPE> class blocking_stream { public: blocking_stream(size_t max_buffer_size_) : max_buffer_size(max_buffer_size_) { } //PUSH data into the buffer blocking_stream &operator<<(TYPE &other) { std::unique_lock<std::mutex> mtx_lock(mtx); while(buffer.size()>=max_buffer_size) stop_if_full.wait(mtx_lock); buffer.push(std::move(other)); mtx_lock.unlock(); …
Chcę wiedzieć, jakie są semantyczne różnice między propozycją pełnych koncepcji C ++ a ograniczeniami szablonowymi (na przykład ograniczenia, które pojawiły się w Dlang lub nowa propozycja konceptów lite dla C ++ 1y ). Co potrafią pełnoprawne koncepcje, czego nie potrafią ograniczenia szablonowe?
C ++ 11 dodał kilka nowych funkcji konwersji ciągów: http://en.cppreference.com/w/cpp/string/basic_string/stoul Zawiera stoi (ciąg do wartości typu int), stol (ciąg do długości długiej), stoll (ciąg do długości długiej bez znaku), stoul (ciąg do długości bez znaku), stoull (ciąg do długości bez znaku). W przypadku jego braku godna uwagi jest funkcja stou …
Dlaczego nie std::initializer_listma wbudowanego języka podstawowego? Wydaje mi się, że jest to dość ważna cecha C ++ 11, a mimo to nie ma własnego zarezerwowanego słowa kluczowego (lub czegoś podobnego). Zamiast tego initializer_listjest to po prostu klasa szablonu z biblioteki standardowej, która ma specjalne, niejawne mapowanie z nowej składni listy …
Jeśli przekażę następujący kod przez moją migawkę GCC 4.7, spróbuje skopiować unique_ptrs do wektora. #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Oczywiście to nie może działać, ponieważ std::unique_ptrnie można go skopiować: błąd: użycie usuniętej funkcji 'std :: unique_ptr …
W sekcji C ++ Programming Language Bjarne Stroustrupa, 4. wydanie, sekcja 36.3.6 Operacje podobne do STL, następujący kod jest używany jako przykład łączenia : void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace( s.find( "even" …
Wersja preview Visual Studio 2012 (kolejna wersja po VS2010) jest już dostępna . Czy ktoś wie, jakie nowe funkcje C ++ 11 obsługuje? (W tej chwili nie mogę tego wypróbować).
Chcę wiedzieć, co [=]robi? Oto krótki przykład template <typename T> std::function<T (T)> makeConverter(T factor, T offset) { return [=] (T input) -> T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); Jak kod działałby z []zamiast [=]? zakładam, że std::function<T (T)> oznacza prototyp funkcji, …
Bawiłem się lambdami C ++ i ich niejawną konwersją na wskaźniki funkcji. Moim początkowym przykładem było użycie ich jako wywołania zwrotnego dla funkcji ftw. Działa to zgodnie z oczekiwaniami. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int …
Zawsze o to pytałem, ale nigdy nie otrzymałem naprawdę dobrej odpowiedzi; Myślę, że prawie każdy programista jeszcze przed napisaniem pierwszego „Hello World” zetknął się z wyrażeniem „makro nie powinno być nigdy używane”, „makro jest złe” i tak dalej, moje pytanie brzmi: dlaczego? Czy po tylu latach istnieje prawdziwa alternatywa dla …
Próbuję użyć biblioteki chronograficznej dla timerów i czasów trwania. Chcę móc mieć Duration frameStart;(od początku aplikacji) i Duration frameDelta;(czas między klatkami) Muszę mieć frameDeltaczas trwania w milisekundach i sekundach zmiennoprzecinkowych. Jak to zrobić z nowymi <chrono>bibliotekami C ++ 11 ? Pracowałem nad tym i googlowałem (informacje są skąpe). Kod jest …
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.