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

10
Ham belleğe görünüm olarak std :: vector kullanımı
Bir noktada bana tamsayılar dizisi ve bir boyut için ham bir işaretçi veren harici bir kütüphane kullanıyorum. Şimdi std::vectorbu değerlere ham işaretçilerle erişmek yerine yerinde erişmek ve değiştirmek için kullanmak istiyorum . İşte konuyu açıklayan yapay bir örnek: size_t size = 0; int * data = get_data_from_library(size); // raw data …
71 c++  c++11  vector  stdvector 

5
Lambda'nın kendisinde bir C ++ lambda fonksiyonunun adresi nasıl alınır?
Kendi içinde bir lambda fonksiyonunun adresini nasıl alacağımı anlamaya çalışıyorum. İşte bir örnek kod: []() { std::cout << "Address of this lambda function is => " << ???? }(); Lambda'yı değişken olarak yakalayabildiğimi ve adresi yazdırabileceğimi biliyorum, ancak bu anonim işlev yürütülürken yerinde yapmak istiyorum. Bunu yapmanın daha basit bir …
53 c++  c++11  lambda  c++14  c++17 

3
C ++ decltype ve parantezler - neden?
Konu daha önce tartışılmıştı , ancak bu bir kopya değil. Birisi decltype(a)ve arasındaki farkı sorduğunda decltype((a)), normal cevap - abir değişkendir, (a)bir ifadedir. Bu cevabı tatmin edici bulmuyorum. Birincisi, abir ifadedir. Birincil ifade seçenekleri arasında, diğerleri arasında - (ifade) id-ifadesi Daha da önemlisi, decltype ifadesi parantezleri çok, çok açık bir …

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 

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 <typename ForwardIt> inline auto range(ForwardIt begin, ForwardIt end) { /* ... */ } template <typename Range, typename CharT> inline auto range(const Range& range, const CharT* sep) { /* ... */ } …


3
Lambda fonksiyonunun değişken değişkenin bir referanstan global değişkene davranış davranışı farkı
Mutable anahtar kelime ile küresel değişkene bir referans yakalamak için bir lambda kullanır ve sonra lambda işlevindeki değeri değiştirmek sonuçları derleyiciler arasında farklı bulundu. #include <stdio.h> #include <functional> int n = 100; std::function<int()> f() { int &m = n; return [m] () mutable -> int { m += 123; return …

2
Pratikte rasgele sayı motorlarından hangisi kullanılmalıdır? std :: mt19937?
Diyelim ki C ++ <random>olanaklarını pratik bir programda kullanmak istiyorsunuz ("pratik" in bazı tanımları için - buradaki kısıtlamalar bu sorunun bir parçasıdır). Kabaca şöyle bir kod var: 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); // TODO: proper …
21 c++  c++11  random 

4
Şablon türünün doğru yapıcısını nasıl çağırırım?
Aşağıdaki kodda, yorumlanan satırın hemen üstündeki satırla aynı şekilde çalışmasını nasıl sağlayabilirim? Ben genel bir kod yapmak istiyorum, bu bir şablonun uygun yapıcı çağırır Type. #include <string> #include <iostream> template <typename Type> struct Class { Type data; Class(Type data) : data(data) { } }; int main() { Class<std::string> a = …

4
Sürekli numaralandırma C ++ 11
Bir enum sürekli olup olmadığını C ++ 11 denetlemek için bir yolu var mı ? Olmayan bir enum değerleri vermek tamamen geçerlidir. Enum sürekli olup olmadığını kontrol etmek için C ++ 14, C ++ 17 veya belki C ++ 20'de bir tür özelliği gibi bir özellik var mı? Bu, static_assert …
17 c++  c++11  c++14  c++17  c++20 

2
Bu eski bir C ++ tarzı yapıcı mı?
İşte bir parça C ++ kodu. Bu örnekte, birçok kod bloğu yapıcı çağrılarına benzemektedir. Ne yazık ki, # 3 blok kodu değil ( https://godbolt.org/z/q3rsxn ve https://cppinsights.io kullanarak kontrol edebilirsiniz ). Bence, eski bir C ++ gösterimi ve {} (cf # 4) kullanarak yeni C ++ 11 inşaat gösteriminin tanıtımını açıklayabilir. …
17 c++  c++11 


2
Neden std :: swap, C ++ 20'den önce constexpr olarak işaretlenmiyor?
C ++ 20'de std::swapbir constexprişlev haline gelir . Standart kütüphanenin constexpr, şeyleri işaretlemede dilin gerçekten gerisinde olduğunu biliyorum , ancak 2017 <algorithm>yılına kadar, bir sürü başka şey gibi oldukça karmaşıktı. Henüz - std::swapdeğildi. Bu işaretlemeyi engelleyen garip bir dil kusuru olduğunu belirsiz bir şekilde hatırlıyorum, ancak detayları unutuyorum. Birisi bunu …

3
Bir vektörü iki aralık içinde azalan sırada sıralama
Diyelim ki bir tamsayı vektörüm var: std::vector<int> indices; for (int i=0; i<15; i++) indices.push_back(i); Sonra azalan sırada sıralıyorum: sort(indices.begin(), indices.end(), [](int first, int second) -> bool{return indices[first] > indices[second];}) for (int i=0; i<15; i++) printf("%i\n", indices[i]); Bu aşağıdakileri üretir: 14 13 12 11 10 9 8 7 6 5 4 …

1
Öğeleri mükemmel bir şekilde ileterek std :: vector'u listeleyebilir miyim?
Ben std :: vector toplam liste initalizasyon hareket daha uygulanabilir olduğunda kopya başlatma gerçekleştirdiğini fark ettim . Aynı zamanda, birden çok emplace_backs istediğimi yapar. Ben sadece bir şablon fonksiyonu yazma bu kusursuz çözümü ile gelebilir init_emplace_vector. Bununla birlikte, sadece müstehcen olmayan tek değerli kurucular için idealdir . template <typename T, …

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.