Pytania otagowane jako c++

C ++ jest językiem programowania ogólnego przeznaczenia. Został pierwotnie zaprojektowany jako rozszerzenie do C i ma podobną składnię, ale teraz jest to zupełnie inny język. Ten znacznik służy do pytań o kod (kompilowany) za pomocą kompilatora C ++. Użyj tagu specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardową [C ++ 11], [C ++ 14], [C ++ 17] lub [C ++ 20] itp.



1
Dlaczego w C ++ różnice między liczbami ujemnymi static acast <unsigned> są różne, jeśli liczba jest stała, czy nie
Jakie reguły C ++, które oznaczają równość, są fałszywe ? Dany: float f {-1.0}; bool equal = (static_cast&lt;unsigned&gt;(f) == static_cast&lt;unsigned&gt;(-1.0)); Np. Https://godbolt.org/z/fcmx2P #include &lt;iostream&gt; int main() { float f {-1.0}; const float cf {-1.0}; std::cout &lt;&lt; std::hex; std::cout &lt;&lt; " f" &lt;&lt; "=" &lt;&lt; static_cast&lt;unsigned&gt;(f) &lt;&lt; '\n'; std::cout &lt;&lt; "cf" …
28 c++  casting 

2
Dlaczego mojej klasy nie da się zbudować domyślnie?
Mam te zajęcia: #include &lt;type_traits&gt; template &lt;typename T&gt; class A { public: static_assert(std::is_default_constructible_v&lt;T&gt;); }; struct B { struct C { int i = 0; }; A&lt;C&gt; a_m; }; int main() { A&lt;B::C&gt; a; } Podczas kompilacji a_mnie jest domyślnie możliwy do zbudowania, ale ajest. Przy zmianie Cna: struct C { …
28 c++ 


2
Kiedy „to” jest uchwycone przez lambdę, czy musi to być użyte jawnie?
Przykłady, które znalazłem, że chwytanie thisw lambda używa tego wprost; na przykład: capturecomplete = [this](){this-&gt;calstage1done();}; Ale wydaje się, że możliwe jest również użycie go w sposób dorozumiany; na przykład: capturecomplete = [this](){calstage1done();}; Przetestowałem to w g ++ i skompilowałem. Czy to jest standardowy C ++? (a jeśli tak, to która …

2
Dlaczego sumowanie zgrupowane jest wolniejsze w przypadku grup posortowanych niż grup nieposortowanych?
Mam 2 kolumny liczb całkowitych rozdzielanych tabulatorami, z których pierwsza jest liczbą całkowitą losową, druga liczbą całkowitą identyfikującą grupę, którą może wygenerować ten program. ( generate_groups.cc) #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; int main(int argc, char* argv[]) { int num_values = atoi(argv[1]); int num_groups = atoi(argv[2]); int group_size = num_values …
27 c++  performance 


3
Czy można zwracać domyślną wartość argumentu przez stałe odniesienie?
Czy można zwracać domyślną wartość argumentu przez odwołanie do stałej, jak w poniższych przykładach: https://coliru.stacked-crooked.com/a/ff76e060a007723b #include &lt;string&gt; const std::string&amp; foo(const std::string&amp; s = std::string("")) { return s; } int main() { const std::string&amp; s1 = foo(); std::string s2 = foo(); const std::string&amp; s3 = foo("s"); std::string s4 = foo("s"); }

2
Lista inicjująca wewnątrz std :: pair
Ten kod: #include &lt;iostream&gt; #include &lt;string&gt; std::pair&lt;std::initializer_list&lt;std::string&gt;, int&gt; groups{ { "A", "B" }, 0 }; int main() { for (const auto&amp; i : groups.first) { std::cout &lt;&lt; i &lt;&lt; '\n'; } return 0; } kompiluje, ale zwraca segfault. Dlaczego? Testowany na gcc 8.3.0 i na kompilatorach online.
26 c++  std  std-pair 

3
Jak mogę stworzyć sposób kartezjańskiego produktu list typów w C ++?
Wyjaśniające. Zasadniczo powiedz, że mam takie listy typów: using type_list_1 = type_list&lt;int, somestructA&gt;; using type_list_2 = type_list&lt;somestructB&gt;; using type_list_3 = type_list&lt;double, short&gt;; Mogą to być różne listy typów. Jak uzyskać listę typową produktu kartezjańskiego? result = type_list&lt; type_list&lt;int, somestructB, double&gt;, type_list&lt;int, somestructB, short&gt;, type_list&lt;somestructA, somestructB, double&gt;, type_list&lt;somestructA, somestructB, short&gt; &gt;; …


4
Porównanie makr według dyrektywy
Dlaczego #ifspełniono warunek w następującym kodzie: #include &lt;iostream&gt; #define VALUE foo int main() { #if VALUE == bar std::cout &lt;&lt; "WORKS!" &lt;&lt; std::endl; #endif // VALUE }

4
Kontener STL z określonym typem jako argument ogólny
Czy jest jakiś sposób, w jaki mogę stworzyć funkcję, która przyjmuje kontener określonego typu (powiedzmy std::string) jako parametr void foo(const std::container&lt;std::string&gt; &amp;cont) { for(std::string val: cont) { std::cout &lt;&lt; val &lt;&lt; std::endl; } } i nazwać to dla każdego typu kontenera STL jako dane wejściowe? jak wyżej? std::set&lt;std::string&gt; strset; std::vector&lt;std::string&gt; …


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.