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.

2
Które z silników losowych liczb <losowych> powinno się faktycznie stosować w praktyce? std :: mt19937?
Załóżmy, że chcesz korzystać z narzędzi C ++ &lt;random&gt;w praktycznym programie (dla pewnej definicji „praktyczny” - ograniczenia tutaj są swego rodzaju częścią tego pytania). Masz mniej więcej taki kod: int main(int argc, char **argv) { int seed = get_user_provided_seed_value(argc, argv); if (seed == 0) seed = std::random_device()(); ENGINE g(seed); // …
21 c++  c++11  random 

4
Niejawna konwersja niedozwolona po powrocie
#include &lt;optional&gt; bool f() { std::optional&lt;int&gt; opt; return opt; } Nie kompiluje: 'return': cannot convert from 'std::optional&lt;int&gt;' to 'bool' Odniesienie do konsultacji Chciałbym znaleźć wyjaśnienie, ale przeczytałem je tak, jak powinno być dobrze. Konwersje niejawne są wykonywane za każdym razem, gdy wyrażenie pewnego typu T1 jest używane w kontekście, który …


4
Jak wywołać odpowiedniego konstruktora typu szablonu?
Jak w poniższym kodzie mogę sprawić, by linia z komentarzem działała tak samo, jak linia tuż nad nią? Chciałbym, aby był to ogólny kod, który wywołuje odpowiedniego konstruktora szablonu Type. #include &lt;string&gt; #include &lt;iostream&gt; template &lt;typename Type&gt; struct Class { Type data; Class(Type data) : data(data) { } }; int …

5
Ustaw operację w c ++ (zaktualizuj istniejącą wartość)
Oto mój kod: while (it!=s.end()) //here 's' is a set of stl and 'it' is iterator of set { *it=*it-sub; //'sub' is an int value it++; } Nie mogę zaktualizować wartości ustawionej przez iterator. Chcę odjąć wartość całkowitą „sub” od wszystkich elementów zestawu. Czy ktoś może mi pomóc, gdzie jest …
21 c++ 

1
Dlaczego GCC inicjuje agregację tablicy najpierw wypełniając całość zerami, w tym elementami niezerowymi?
Dlaczego gcc wypełnia całą tablicę zerami zamiast tylko pozostałych 96 liczb całkowitych? Wszystkie niezerowe inicjalizatory znajdują się na początku tablicy. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the compiler to materialize a[] in memory …


3
Podziel dany typ std :: variant według podanych kryteriów
Jak według danego typu wariantu using V = std::variant&lt;bool, char, std::string, int, float, double, std::vector&lt;int&gt;&gt;; zadeklaruj dwa typy wariantów using V1 = std::variant&lt;bool, char, int, float, double&gt;; using V2 = std::variant&lt;std::string, std::vector&lt;int&gt;&gt;; gdzie V1obejmuje wszystkie typy arytmetyczne z Vi V2obejmuje wszystkie typy arytmetyczne z V? V może być parametrem klasy …
20 c++  c++17  std-variant 

1
Czy odrodzenie wątku samo w sobie zapewnia gwarancje kolejności pamięci?
Chcę z grubsza to zrobić: Początkowy wątek: napisz niektóre wartości do globalnych zmiennych (nigdy więcej nie zostaną zapisane) Mogą to być umiarkowanie duże dane (tablice, ciągi itp.). Nie można tego po prostu zrobić std::atomic&lt;&gt;. spawnuj inne wątki Inne wątki: przeczytaj stan globalny pracować, itp. Teraz wiem, że mogę przekazywać argumenty …

1
Dlaczego {} jako argument funkcji nie prowadzi do niejednoznaczności?
Rozważ ten kod: #include &lt;vector&gt; #include &lt;iostream&gt; enum class A { X, Y }; struct Test { Test(const std::vector&lt;double&gt;&amp;, const std::vector&lt;int&gt;&amp; = {}, A = A::X) { std::cout &lt;&lt; "vector overload" &lt;&lt; std::endl; } Test(const std::vector&lt;double&gt;&amp;, int, A = A::X) { std::cout &lt;&lt; "int overload" &lt;&lt; std::endl; } }; int …


4
Czy można używać std :: transform z std :: back_inserter?
Cppreference ma ten przykładowy kod dla std::transform: std::vector&lt;std::size_t&gt; ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -&gt; std::size_t { return c; }); Ale mówi również: std::transformnie gwarantuje zastosowania unary_oplub binary_op. Aby zastosować funkcję do sekwencji w kolejności lub zastosować funkcję, która modyfikuje elementy sekwencji, użyj std::for_each. Ma to prawdopodobnie umożliwić równoległe …


3
Nieokreślone zachowanie w wektorze rzutowanych wektorów
Dlaczego ten kod zapisuje nieokreśloną liczbę pozornie niezainicjowanych liczb całkowitych? #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; int main() { for (int i : vector&lt;vector&lt;int&gt;&gt;{{77, 777, 7777}}[0]) cout &lt;&lt; i &lt;&lt; ' '; } Spodziewałem się, że wynik będzie 77 777 7777. Czy ten kod ma być niezdefiniowany?
19 c++ 

2
liczba całkowita -> reguły konwersji wskaźnika
Rozważ następujący kod. void f(double p) {} void f(double* p) {} int main() { f(1-1); return 0; } MSVC 2017 tego nie kompiluje. Oznacza to, że istnieje niejednoznaczne przeciążone wywołanie, ponieważ 1-1jest takie samo, jak 0i dlatego może zostać przekształcone w double*. Inne sztuczki, takie jak 0x0, 0Llub static_cast&lt;int&gt;(0)też nie …
19 c++  visual-c++  types 

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.