«c++11» etiketlenmiş sorular

C ++ 11 olarak derlenmesi gereken kod için bu etiketi kullanın (C ++ 14 veya sonraki sürümlerde sunulan hiçbir özelliği kullanmayın).

5
harici şablon kullanma (C ++ 11)
Şekil 1: işlev şablonları TemplHeader.h template<typename T> void f(); TemplCpp.cpp template<typename T> void f(){ //... } //explicit instantation template void f<T>(); main.cpp #include "TemplHeader.h" extern template void f<T>(); //is this correct? int main() { f<char>(); return 0; } Kullanmanın doğru yolu bu mu extern templateyoksa bu anahtar kelimeyi yalnızca Şekil …
116 c++  templates  c++11  extern 


4
Bir for döngüsü içinde if deyiminden kaçınmak mı?
Böyle Writerbir işlevi olan bir sınıfım var writeVector: void Drawer::writeVector(vector<T> vec, bool index=true) { for (unsigned int i = 0; i < vec.size(); i++) { if (index) { cout << i << "\t"; } cout << vec[i] << "\n"; } } Hala performans konusunda endişelenirken, yinelenen bir koda sahip olmamaya …


3
Döngüler için menzil tabanlı olarak yönlendirme referansları kullanmanın avantajı nedir?
const auto&salt okunur işlemler yapmak istersem yeterli olur. Ancak, çarpıştım for (auto&& e : v) // v is non-const son zamanlarda birkaç kez. Bu beni meraklandırıyor: Bazı belirsiz köşe durumlarda, yönlendirme referanslarını kullanmanın auto&veya ile karşılaştırıldığında bazı performans faydaları olması mümkün müdür const auto&? ( shared_ptrbelirsiz köşe davaları için bir …

1
Variadic bir fonksiyondaki tüm argümanlarda std :: forward nasıl çağrılır?
Ben sadece genel bir nesne fabrikası yazıyordum ve değişken bir şablon oluşturmak için boost önişlemci meta kitaplığını kullanıyordum (2010 kullanıyorum ve bu onları desteklemiyor). Fonksiyonum rval referansları kullanıyor ve std::forwardmükemmel yönlendirme yapmak için beni düşündürdü ... C ++ 0X çıktığında ve standart bir derleyicim olduğunda bunu gerçek değişken şablonlarla yapardım. …

2
C ++ standartlar komitesi, C ++ 11'de unordered_map'in eklediklerini yok etmesini mi amaçlıyor?
Unordered_map :: insert () eklediğiniz değişkeni yok ettiği çok garip bir hatayı izleyerek hayatımın üç gününü kaybettim. Bu oldukça açık olmayan davranış yalnızca çok yeni derleyicilerde görülür: clang 3.2-3.4 ve GCC 4.8'in bu "özelliği" gösteren tek derleyiciler olduğunu buldum . İşte ana kod tabanımdan sorunu gösteren bazı azaltılmış kodlar: #include …
114 c++  gcc  c++11  clang  standards 

9
Aynı anda iki veya daha fazla konteyneri yinelemenin en iyi yolu nedir?
C ++ 11, kapsayıcılar üzerinde yineleme yapmak için birden çok yol sağlar. Örneğin: Menzile dayalı döngü for(auto c : container) fun(c) std :: for_each for_each(container.begin(),container.end(),fun) Bununla birlikte, aşağıdakiler gibi bir şeyi gerçekleştirmek için aynı boyutta iki (veya daha fazla) kabı yinelemek için önerilen yol nedir: for(unsigned i = 0; i …


20
Bir std :: tuple'ın öğeleri üzerinde nasıl yineleme yapabilirsiniz?
Bir demet üzerinde nasıl yineleme yapabilirim (C ++ 11 kullanarak)? Aşağıdakileri denedim: for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); ama bu çalışmıyor: Hata 1: üzgünüm, uygulanmamış: 'Dinleyici ...' sabit uzunluklu bir bağımsız değişken listesine genişletilemiyor. Hata 2: Sabit bir ifadede görünemiyorum. Öyleyse, bir demetin öğeleri üzerinde nasıl doğru bir şekilde yineleme yapabilirim?

8
Mt19937 PRNG'yi özlü, taşınabilir ve kapsamlı bir şekilde nasıl tohumlayabilirim?
Birisinin <random>rastgele sayılar oluşturmak için kullanılmasını önerdiği birçok yanıt görüyorum , genellikle bunun gibi kodlarla birlikte: std::random_device rd; std::mt19937 gen(rd()); std::uniform_int_distribution<> dis(0, 5); dis(gen); Genellikle bu, aşağıdaki gibi bir tür "kutsal olmayan iğrençliğin" yerini alır: srand(time(NULL)); rand()%6; Biz olabilir eleştirmek savunarak eski yol time(NULL), düşük entropi sağlar time(NULL)tahmin edilebilir ve …
113 c++  c++11  random 

6
Neden bir "const" nesnesi üzerinde "std :: move" kullanabiliriz?
C ++ 11'de şu kodu yazabiliriz: struct Cat { Cat(){} }; const Cat cat; std::move(cat); //this is valid in C++11 aradığımda std::move, nesneyi hareket ettirmek istediğim anlamına gelir, yani nesneyi değiştireceğim. Bir constnesneyi taşımak mantıksızdır, öyleyse neden std::movebu davranışı kısıtlamıyorsunuz? Gelecekte bir tuzak olacak, değil mi? Burada, Brandon'ın yorumda bahsettiği …
113 c++  c++11 

4
Cout senkronize mi / iş parçacığı güvenli mi?
Genel olarak akışların senkronize edilmediğini varsayıyorum, uygun kilitlemeyi yapmak kullanıcıya kalmıştır. Ancak, coutstandart kitaplıkta özel muamele görmek gibi şeyler var mı? Yani, birden fazla iş parçacığı yazıyorsa cout, coutnesneyi bozabilirler mi? Senkronize edilmiş olsanız bile yine de rastgele serpiştirilmiş çıktı alacağınızı anlıyorum, ancak bu serpiştirme garantilidir. Yani, coutbirden çok iş …
112 c++  gcc  c++11 

4
Bir enum sınıfı temel alınan türe dönüştürülebilir mi?
Bir enum classalanı temeldeki türe dönüştürmenin bir yolu var mı ? Bunun otomatik olacağını düşünmüştüm, ama görünüşe göre değil. enum class my_fields : unsigned { field = 1 }; unsigned a = my_fields::field; Bu atama GCC tarafından reddediliyor. error: cannot convert 'my_fields' to 'unsigned int' in assignment.
112 c++  c++11 

13
İçlerinde "if" koşulu olan "for" döngülerini C ++ ile nasıl önleyebilirim?
Neredeyse yazdığım tüm kodlarla, genellikle koleksiyonlarda, sonuçta içlerinde saf "eğer" koşullarıyla sonuçlanan set azaltma problemleriyle uğraşıyorum. İşte basit bir örnek: for(int i=0; i<myCollection.size(); i++) { if (myCollection[i] == SOMETHING) { DoStuff(); } } İşlevsel dillerle, koleksiyonu başka bir koleksiyona indirgeyerek (kolayca) sorunu çözebilir ve ardından tüm işlemleri küçültülmüş setimde gerçekleştirebilirim. …
111 c++  c++11  c++14 

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.