«c++» etiketlenmiş sorular

C ++ genel amaçlı bir programlama dilidir. Başlangıçta C'nin bir uzantısı olarak tasarlanmıştır ve benzer bir sözdizimine sahiptir, ancak şimdi tamamen farklı bir dildir. Bir C ++ derleyicisiyle derlenecek kod (sorulacak) ile ilgili sorular için bu etiketi kullanın. Belirli bir standart revizyon [C ++ 11], [C ++ 14], [C ++ 17] veya [C ++ 20] vb. İle ilgili sorular için sürüme özgü bir etiket kullanın.

6
Std :: vector :: swap yöntemini kullanarak iki farklı vektörü C ++ 'da değiştirmek güvenli midir?
Aşağıdaki koda sahip olduğunuzu varsayalım: #include <iostream> #include <string> #include <vector> int main() { std::vector<std::string> First{"example", "second" , "C++" , "Hello world" }; std::vector<std::string> Second{"Hello"}; First.swap(Second); for(auto a : Second) std::cout << a << "\n"; return 0; } Vektörün std::stringhenüz sınıf olmadığını hayal edin : std::vector<Widget> WidgetVector; std::vector<Widget2> Widget2Vector; İki …
30 c++  c++11  vector  stdvector  swap 

4
Başlatılmamış üyelerle yapıları kopyalama
Bazı üyeleri başlatılmamış bir yapıyı kopyalamak geçerli mi? Tanımlanmamış bir davranış olduğundan şüpheleniyorum, ancak eğer öyleyse, başlatılmamış üyeleri bir yapıda (bu üyeler asla doğrudan kullanılmasa bile) bırakmayı oldukça tehlikeli hale getirir. Standartta buna izin veren bir şey olup olmadığını merak ediyorum. Örneğin, bu geçerli mi? struct Data { int a, …

2
`Std :: string :: find ()` neden hatalarda son yineleyiciyi döndürmüyor?
Davranışını std::string::findstandart C ++ kaplarıyla tutarsız buluyorum . Örneğin std::map<int, int> myMap = {{1, 2}}; auto it = myMap.find(10); // it == myMap.end() Ama bir ip için, std::string myStr = "hello"; auto it = myStr.find('!'); // it == std::string::npos Başarısız myStr.find('!')iade neden myStr.end()yerine neden olmasın std::string::npos? Yana std::stringbaşka kaplarla karşılaştırıldığında …

2
Neden std :: hash 'in deterministik olduğu garanti edilmiyor?
Bundan böyle N4140 (C ++ 14 Standard) kullanacağız . Göre 17.6.3.4 Hash gereksinimlerini § , Döndürülen değer yalnızca tartışmaya bağlı olacaktır k programın süresine ilişkin . [Not: Böylece h(k)aynı değer için ifadenin tüm değerlendirmeleri kaynı sonucu verir , programın belirli bir yürütülmesi için verir . - son not] ve § …

1
C ++ derleme zaman sayaçları, yeniden ziyaret edildi
TL; DR Bu yazının tamamını okumaya çalışmadan önce şunu bilin: sunulan konuya bir çözüm buldum , ancak yine de analizin doğru olup olmadığını bilmek için sabırsızlanıyorum; Çözümü fameta::counterkalan birkaç tuhaflığı çözen bir sınıfa paketledim . Sen edebilirsiniz github bulmak ; En görebilirsiniz Godbolt çalışma . Her şey nasıl başladı Filip …


2
Sınıfım neden varsayılan olarak oluşturulamıyor?
Şu sınıflarım var: #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; } Derleme yapılırken, a_mvarsayılan olarak oluşturulamaz ancak a. Olarak değiştirirken C: struct C { int i; }; …
28 c++ 

1
C ++ 'da, sayı sabitse veya değil ise, static_cast <unsigned> negatif sayı neden farklılık gösterir?
Ne araçlarının C ++ kuralları böyle eşit olduğu yanlış ?. Verilen: float f {-1.0}; bool equal = (static_cast&lt;unsigned&gt;(f) == static_cast&lt;unsigned&gt;(-1.0)); Örneğin, 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
“Bu” bir lambda tarafından ele geçirildiğinde, açıkça kullanılması gerekir mi?
thisBir lambdadaki yakalamanın onu açıkça kullandığını bulduğum örnekler ; Örneğin: capturecomplete = [this](){this-&gt;calstage1done();}; Ancak örtük olarak kullanmak da mümkün görünüyor; Örneğin: capturecomplete = [this](){calstage1done();}; Bunu g ++ 'da test ettim ve derledi. Bu standart C ++ mı? (ve öyleyse, hangi sürüm) veya bir çeşit uzantı mıdır?

3
Bir dönüşüm operatörünün bu aşırı yüklenmesi neden seçildi?
Aşağıdaki kodu düşünün . struct any { template &lt;typename T&gt; operator T &amp;&amp;() const; template &lt;typename T&gt; operator T &amp;() const; }; int main() { int a = any{}; } Burada ikinci dönüştürme operatörü aşırı yük çözünürlüğü ile seçilir. Neden? Anladığım kadarıyla, iki operatör sırasıyla operator int &amp;&amp;() constve hesabından …

2
Gruplandırılmış toplama, sıralı gruplarla sıralanmamış gruplardan neden daha yavaş?
Biri rasgele bir tamsayı, ikincisi bu program tarafından oluşturulabilir grubu tanımlayan bir tamsayı olan sekmeyle ayrılmış tamsayı 2 sütun var. ( 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 / num_groups; int group …
27 c++  performance 

3
C ++ 'ın ikinci bir şablon bağımsız değişkenini tahmin etmesini nasıl önleyebilirim?
İçinde bir yerde, aşağıdaki kodu olan bir C ++ kitaplığı ( strf ) kullanıyorum : namespace strf { template &lt;typename ForwardIt&gt; inline auto range(ForwardIt begin, ForwardIt end) { /* ... */ } template &lt;typename Range, typename CharT&gt; inline auto range(const Range&amp; range, const CharT* sep) { /* ... */ } …

2
Std :: pair içindeki başlatıcı listesi
Bu 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; } derler ancak segfault döndürür. Neden? Gcc 8.3.0 ve çevrimiçi derleyiciler üzerinde test edilmiştir.
26 c++  std  std-pair 

3
Sabit bağımsız değişkenin değerini const referansı ile döndürmek uygun mudur?
Aşağıdaki örneklerde olduğu gibi const referansıyla varsayılan bağımsız değişkenin değerini döndürmek uygun mudur: 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"); }

3
C ++ 'da tip listelerinin Kartezyen ürününü nasıl oluşturabilirim?
Kendini açıklayıcı. Temelde, şöyle listeleri var diyelim: 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;; Değişken sayıda tip listesi olabilir. Kartezyen bir ürün listesi nasıl alabilirim? 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;; Burada verildiği …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.