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


2
Bir dizinin boyutunu almak için bu şablon kodu nasıl çalışır?
Neden bu tür bir kod test dizisinin boyutunu alabilir merak ediyorum? Şablondaki dil bilgisine aşina değilim. Belki birisi altındaki kodun anlamını açıklayabilir template<typename,size_t>. Ayrıca, bir referans linki de tercih edilmektedir. #define dimof(array) (sizeof(DimofSizeHelper(array))) template <typename T, size_t N> char(&DimofSizeHelper(T(&array)[N]))[N]; void InitDynCalls() { char test[20]; size_t n = dimof(test); printf("%d", n); …
61 c++  visual-c++ 

10
C ++ 'da imzalı taşma ve tanımsız davranış (UB)
Aşağıdaki gibi kod kullanımını merak ediyorum int result = 0; int factor = 1; for (...) { result = ... factor *= 10; } return result; Döngü ndefalarca yinelenirse , tam olarak factorçarpılır . Ancak, sadece toplam kez çarpıldıktan sonra kullanılır . Döngünün son yinelemesi dışında asla taşmadığını varsayarsak , …

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 



5
C ++ 'da sayısal için şablon dostu dize
C ++ standart kitaplığında, dizeden sayısal türlere dönüştürme işlevleri vardır: stoi stol stoll stoul stoull stof stod stold ancak bunları şablon kodunda kullanmak sıkıcı buluyorum. Neden hiçbir şablon işlevi yoktur: template<typename T> T sto(...) dizeleri sayısal türlere dönüştürmek için? Onlara sahip olmamak için teknik bir neden göremiyorum, ama belki bir …

2
Neden “Sistem kullanıyor”; kötü uygulama olarak görülmüyor mu?
C ++ geçmişim var ve bu sorunun yanıtlarını tamamen anlıyorum ve kabul ediyorum: Neden “namespace std kullanıyor?” kötü uygulama olarak mı değerlendirildi? Bu yüzden, C # ile biraz deneyime sahip olduğum için, tam tersini görüyorum: using Some.Namespace;kelimenin tam anlamıyla her yerde kullanılıyor. Bir türü kullanmaya başladığınızda, önce ad alanı için …

2
A xor X = B + X için bir çözüm bulma algoritması
A ve B tamsayısı verildiğinde, X tamsayısını bulun, böylece: A, B <2 * 1e18 A xor X = B + X Bu denklemi matematik kullanarak çözmenin mümkün olduğundan şüpheliyim. Bu, 3 yıl önce karşılaştığım bir kodlama problemi ve şimdi bile bunu kendim çözemiyorum. Kodum şu ana kadar: (bu kaba kuvvet …
46 c++  xor 

3
std :: vector (ab) otomatik depolama kullanır
Aşağıdaki snippet'i düşünün: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } Açıktır ki, varsayılan yığın boyutu genellikle 20 MB'den küçük olduğundan, çoğu platformda çökecektir. Şimdi aşağıdaki kodu göz önünde bulundurun: #include <array> #include <vector> int main() { using huge_type = std::array<char, 20*1024*1024>; std::vector<huge_type> v(1); } …

3
Derleme zamanında çok boyutlu bir std :: vektörünün derinliğini nasıl alabilirim?
Çok boyutlu alır std::vectorve bir şablon parametresi olarak geçirilmesi için derinlik (veya boyut sayısı) gerektiren bir işlevi var . Bu değeri kodlamak yerine derinliği bir değer olarak constexpralıp std::vectordöndürecek bir fonksiyon yazmak istiyorum unsigned integer. Örneğin: std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { …

2
Birçok standart kitaplık türü için neden C ++ 20'de operatör! = Kaldırıldı?
Cppreference göre , std::type_info::operator!=C ++ 20 ile kaldırılır, ancak std::type_info::operator==görünüşe göre kalır. Arkasındaki sebep nedir? Eşitsizliğin anlamsız olduğunu karşılaştırmayı kabul edebilirim, ama sonra eşitliği karşılaştırmak da anlamsız olurdu, değil mi? Benzer bir şekilde, operator!=bu gibi kaplar da dahil olmak üzere diğer pek çok standart kütüphane türlerinin std::unordered_map::operator!=ve std::unordered_set::operator!=cppreference göre 20 …

5
Toplam başlatma elemanlarının ihmal edilmesini önlemek mümkün müdür?
Aynı türden birçok üyeye sahip bir yapım var, böyle struct VariablePointers { VariablePtr active; VariablePtr wasactive; VariablePtr filename; }; Sorun şudur ki, yapı üyelerinden birini (örneğin wasactive) başlatmayı unutursam , şöyle: VariablePointers{activePtr, filename} Derleyici bundan şikayet etmeyecek, ancak kısmen başlatılan bir nesnem olacak. Bu tür bir hatayı nasıl önleyebilirim? Bir …


7
İki sıfır arg yapıcısını ayırt etmenin deyimsel yolu
Ben böyle bir sınıf var: struct event_counts { uint64_t counts[MAX_COUNTERS]; event_counts() : counts{} {} // more stuff }; Genellikle varsayılan (sıfır) countsgösterildiği gibi dizi başlatmak istiyorum . Profilleme ile belirlenen seçilen yerlerde, ancak, dizi üzerine yazmak üzere olduğunu biliyorum, ancak derleyici bunu anlamaya yetecek kadar akıllı değil, çünkü dizi başlatma …

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.