Pertanyaan yang diberi tag «c++»

C ++ adalah bahasa pemrograman untuk tujuan umum. Awalnya dirancang sebagai ekstensi ke C dan memiliki sintaksis yang sama, tetapi sekarang bahasa yang sama sekali berbeda. Gunakan tag ini untuk pertanyaan tentang kode yang akan dikompilasi dengan kompiler C ++. Gunakan tag khusus versi untuk pertanyaan yang berkaitan dengan revisi standar spesifik [C ++ 11], [C ++ 14], [C ++ 17] atau [C ++ 20], dll.

4
Menyalin struct dengan anggota yang tidak diinisialisasi
Apakah valid untuk menyalin struct beberapa yang anggotanya tidak diinisialisasi? Saya menduga itu adalah perilaku yang tidak terdefinisi, tetapi jika demikian, itu membuat meninggalkan anggota yang tidak diinisialisasi dalam sebuah struct (bahkan jika anggota tersebut tidak pernah digunakan secara langsung) sangat berbahaya. Jadi saya bertanya-tanya apakah ada sesuatu dalam standar …

2
Mengapa `std :: string :: find ()` tidak mengembalikan iterator akhir saat gagal?
Saya menemukan perilaku std::string::findtidak konsisten dengan wadah standar C ++. Misalnya std::map<int, int> myMap = {{1, 2}}; auto it = myMap.find(10); // it == myMap.end() Tapi untuk sebuah string, std::string myStr = "hello"; auto it = myStr.find('!'); // it == std::string::npos Kenapa bukan yang gagal myStr.find('!')kembali myStr.end()saja std::string::npos? Karena std::stringagak …

2
Mengapa std :: hash tidak dijamin deterministik?
Selanjutnya, kami menggunakan N4140 (Standar C ++ 14). Menurut § 17.6.3.4 Persyaratan hash , Nilai yang dikembalikan hanya akan bergantung pada argumen k selama durasi program . [Catatan: Demikian semua evaluasi ekspresi h(k)dengan nilai yang sama untuk kmenghasilkan hasil yang sama untuk eksekusi program yang diberikan . - catatan akhir] …



2
Mengapa kelas saya tidak dapat dibangun-standar?
Saya memiliki kelas-kelas itu: #include <type_traits> template <typename T> class A { public: static_assert(std::is_default_constructible_v<T>); }; struct B { struct C { int i = 0; }; A<C> a_m; }; int main() { A<B::C> a; } Saat kompilasi, a_mtidak bisa dibangun tetapi default a. Saat mengubah Cke: struct C { int …
28 c++ 

1
Mengapa di C ++ lakukan static_cast <unsigned> dari angka negatif berbeda jika jumlahnya konstan atau tidak
Apa C ++ aturan yang berarti sama adalah palsu ?. Diberikan: float f {-1.0}; bool equal = (static_cast&lt;unsigned&gt;(f) == static_cast&lt;unsigned&gt;(-1.0)); Misalnya 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
Ketika "ini" ditangkap oleh lambda, apakah itu harus digunakan secara eksplisit?
Contoh-contoh yang saya temukan yang menangkap thisdalam lambda menggunakannya secara eksplisit; misalnya: capturecomplete = [this](){this-&gt;calstage1done();}; Tetapi tampaknya juga memungkinkan untuk menggunakannya secara implisit; misalnya: capturecomplete = [this](){calstage1done();}; Saya menguji ini di g ++, dan dikompilasi. Apakah ini standar C ++? (dan jika ya, versi yang mana), atau apakah itu suatu …

2
Mengapa penjumlahan yang dikelompokkan lebih lambat dengan grup yang disortir daripada grup yang tidak disortir?
Saya memiliki 2 kolom bilangan bulat terbatas tab, yang pertama adalah bilangan bulat acak, yang kedua adalah bilangan bulat yang mengidentifikasi grup, yang dapat dihasilkan oleh program ini. ( 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]); …
27 c++  performance 


2
Daftar inisialisasi di dalam std :: pair
Kode ini: #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; } mengkompilasi tetapi mengembalikan segfault. Mengapa? Diuji pada gcc 8.3.0 dan pada kompiler online.
26 c++  std  std-pair 

3
Bagaimana saya bisa membuat produk Cartesian dari daftar tipe di C ++?
Cukup jelas. Pada dasarnya, katakan saya memiliki daftar jenis seperti: 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;; Mereka bisa menjadi nomor variadic dari daftar jenis. Bagaimana cara saya mendapatkan daftar produk Cartesian? result = type_list&lt; type_list&lt;int, somestructB, double&gt;, type_list&lt;int, somestructB, short&gt;, type_list&lt;somestructA, somestructB, …


3
Apakah boleh mengembalikan nilai argumen default dengan referensi const?
Apakah boleh mengembalikan nilai argumen default dengan referensi const seperti pada contoh di bawah ini: 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"); …

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.