«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).

2
C ++ 11 lambda uygulaması ve bellek modeli
C ++ 11 kapanışlarının nasıl doğru bir şekilde düşünülebileceği std::functionve nasıl uygulandığı ve belleğin nasıl işlendiği konusunda biraz bilgi almak istiyorum . Erken optimizasyona inanmasam da, yeni kod yazarken seçimlerimin performansa etkisini dikkatlice düşünme alışkanlığım var. Ayrıca, mikrodenetleyicilerde ve deterministik olmayan bellek tahsisi / serbest bırakma duraklamalarının önleneceği ses sistemleri …
97 c++  memory  lambda  c++11 

7
Std :: unique_ptr'yi bir işleve nasıl geçirebilirim
A'yı std::unique_ptrbir işleve nasıl geçirebilirim ? Diyelim ki şu sınıfa sahibim: class A { public: A(int val) { _val = val; } int GetVal() { return _val; } private: int _val; }; Aşağıdakiler derlenmez: void MyFunc(unique_ptr<A> arg) { cout << arg->GetVal() << endl; } int main(int argc, char* argv[]) { …
97 c++  c++11  unique-ptr 

3
Ayraçlı başlatıcı ne zaman kullanılır?
C ++ 11'de, sınıfları başlatmak için, değişkenleri nasıl başlatacağımız konusunda bize çok sayıda olasılık veren yeni sözdizimimiz var. { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; std::complex<double> c = {3,4}; auto d = …

3
Kavramlar ve şablon kısıtlamaları arasındaki farklar nelerdir?
C ++ tam kavram önerisi ile şablon kısıtlamaları arasındaki anlamsal farklılıkların neler olduğunu bilmek istiyorum (örneğin, Dlang'da görünen kısıtlamalar veya C ++ 1y için yeni kavramlar-lite önerisi ). Şablon kısıtlamalarının yapamadığından daha fazlasını yapabilen tam teşekküllü kavramlar nelerdir?
96 c++  c++11  d  c++-concepts 

3
Neden std :: stou yok?
C ++ 11, bazı yeni dize dönüştürme işlevleri ekledi: http://en.cppreference.com/w/cpp/string/basic_string/stoul Stoi (string'den int'e), stol (string'den long'a), stoll (string'den long'a), stoul (string'den unsigned long'a), stoull (string'den unsigned long'a kadar) içerir. Onun yokluğunda dikkate değer bir stou (dizeden işaretsiz) işlevidir. Gerekli olmamasına rağmen diğerlerinin hepsinin bir nedeni var mı? related: C ++ …
96 c++  string  c++11  std 

5
Yalnızca hareket tipi bir vektörü listeleyebilir miyim?
Aşağıdaki kodu GCC 4.7 anlık görüntümden geçirirsem, s'leri unique_ptrvektöre kopyalamaya çalışır . #include <vector> #include <memory> int main() { using move_only = std::unique_ptr<int>; std::vector<move_only> v { move_only(), move_only(), move_only() }; } Açıkçası bu işe yaramaz çünkü std::unique_ptrkopyalanamaz: hata: silinmiş işlevin kullanımı 'std :: unique_ptr <_Tp, _Dp> :: unique_ptr (const std …


2
[=] C ++ 'da ne anlama geliyor?
Ben bilmek istiyorum [=]nedir? İşte kısa bir örnek template <typename T> std::function<T (T)> makeConverter(T factor, T offset) { return [=] (T input) -> T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); Kod []yerine nasıl çalışır [=]? Farzediyorum std::function<T (T)> (T)bağımsız değişken olarak alınan …
95 c++  c++11  lambda 

6
Derleme zamanında bir C dizesinin hesaplama uzunluğu. Bu gerçekten bir konstexpr mi?
Derleme zamanında bir dizgenin uzunluğunu hesaplamaya çalışıyorum. Bunu yapmak için aşağıdaki kodu kullanıyorum: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } Her şey beklendiği gibi çalışır, program 4 ve 8'i yazdırır. …

2
"C ++ Programlama Dili" 4. baskı bölüm 36.3.6'daki bu kod iyi tanımlanmış davranışa sahip mi?
Bjarne Stroustrup'un The C ++ Programming Language 4. basım bölümünde 36.3.6 STL-like Operations bölümünde zincirleme örneği olarak aşağıdaki kod kullanılmıştır : void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace( s.find( "even" ), 4, "only" …


1
+ Kullanarak bir lambda için işlev işaretçisi ve std :: function üzerindeki belirsiz aşırı yüklemeyi çözme
Aşağıdaki kodda, ilk çağrı foobelirsizdir ve bu nedenle derleme başarısız olur. +Lambda'dan önce eklenen ikincisi, işlev işaretçisi aşırı yüklemesini çözer. #include <functional> void foo(std::function<void()> f) { f(); } void foo(void (*f)()) { f(); } int main () { foo( [](){} ); // ambiguous foo( +[](){} ); // not ambiguous (calls …

8
İşlev işaretçisi olarak yakalamalara sahip C ++ lambda
C ++ lambdas ve bunların işlev işaretçilerine örtük dönüşümleriyle oynuyordum. Başlangıç ​​örneğim onları ftw işlevi için geri arama olarak kullanıyordu. Bu beklendiği gibi çalışıyor. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int typeflag) -> int { cout …

4
<chrono> 'dan int milli ve float saniye olarak süre nasıl alınır?
Zamanlayıcılar ve süreler için krono kitaplığını kullanmaya çalışıyorum. Duration frameStart;(Uygulama başlangıcından itibaren) ve Duration frameDelta;(kareler arasındaki süre ) a sahip olmak istiyorum frameDeltaSüreyi milisaniye ve kayan saniye olarak alabilmem gerekiyor . Bunu yeni c ++ 11 &lt;chrono&gt;kitaplıklarıyla nasıl yaparsınız ? Üzerinde çalışıyorum ve Google'da arama yapıyorum (bilgi seyrek). Kod oldukça …
94 c++  c++11  timer  chrono 

8
Önişlemci makroları neden kötüdür ve alternatifler nelerdir?
Bunu her zaman sordum ama gerçekten iyi bir yanıt almadım; Sanırım ilk "Merhaba Dünya" yı yazmadan hemen hemen her programcı "makro asla kullanılmamalıdır", "makro kötüdür" gibi bir ifadeyle karşılaşmıştı, sorum şu: neden? Yeni C ++ 11 ile bunca yıldan sonra gerçek bir alternatif var mı? Kolay kısım, #pragmaplatforma özgü ve …

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.