«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
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
Sabit adrese işaretçi ve aynı adresin sabitlerini işaretlemek için işaretçi ile işlev çağrısı
Bir dizi veri girişi ve işaretçiler kullanarak başka bir veri dizisi çıktı bir işlev yazmak istiyorum. Ben her ikisi de sonuç ne olduğunu merak ediyorum srcve dstaynı adres işaret çünkü derleyici const için optimize edebilirsiniz biliyorum. Tanımlanmamış bir davranış mı? (Hem C hem de C ++ ile etiketledim, çünkü cevabın …

2
Std :: chrono :: yıl depolama alanı gerçekten en az 17 bit mi?
Gönderen cppreference std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> Kullanılması libc++, bunun altını depolama görünüyor std::chrono::yearsDİR shortimzalanır 16 bit . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB Cppreference veya başka bir şey üzerinde bir yazım hatası …
14 c++  chrono  c++20  libc++ 

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
Clang kodu derlemez ancak gcc ve msvc derledi
Sorunun ne olduğunu anlamıyorum: kodumda veya derleyicide (daha az mümkün). Bunun gibi bir kod parçası var: #include <iostream> #include <type_traits> #include <set> template<typename T, typename = void> struct TestA: std::false_type {}; template<typename T> struct TestA<T, std::void_t<typename T::reverse_iterator>> : std::true_type {}; template<typename T> struct TestA<T, std::void_t<typename T::dummy_iterator>> : std::true_type {}; int …

2
Anahtar olarak bir vektör C ++ içinde dahili olarak nasıl çalışır?
Bu SO cevapları Anahtar için Vector ile STL Haritasının vektörün anahtar olarak kullanılabileceğini söylüyor. Yani bir vektörü anahtar olarak kullandığımızda. Anahtarın benzersiz olması gerektiğinden, bu gerçekten nasıl çalışır, bu yüzden aynı öğelerle başka bir vektör eklediğimizde, mapöğeye göre yinelenen öğe olup olmadığını kontrol edecek veya vektörün adı bir şey belirleyecek …
14 c++  arrays  dictionary  vector  stl 


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, …

1
Boş taban sınıfı da üye değişken olduğunda boş taban optimizasyonu neden yasaklanmıştır?
Boş taban optimizasyonu harika. Ancak, aşağıdaki kısıtlama ile birlikte gelir: Aynı tabandaki iki temel alt nesnenin nesne temsili içinde farklı adreslere sahip olması gerektiğinden, boş taban sınıflarından birinin de ilk statik olmayan veri üyesinin türü veya tabanı olması durumunda boş taban optimizasyonu yasaktır. türetilmiştir. Bu kısıtlamayı açıklamak için aşağıdaki kodu …



1
Bu std :: gcd bir hata mı?
Ben std::gcdbeklenmedik buldum bu davranış karşılaştım : #include <iostream> #include <numeric> int main() { int a = -120; unsigned b = 10; //both a and b are representable in type C using C = std::common_type<decltype(a), decltype(b)>::type; C ca = std::abs(a); C cb = b; std::cout << a << ' ' …

2
Atma ve yakalama atları nasıl çalışır?
Bu kodla: int main() { try { throw -1; } catch (int& x) { std::cerr << "We caught an int exception with value: " << x << std::endl; } std::cout << "Continuing on our merry way." << std::endl; return 0; } Sahibiz: /tmp$ ./prorgam.out Continuing on our merry way We …

1
constexpr ise - neden atılan ifade tam olarak kontrol edilir?
GCC 10 c ++ 20 consteval ile uğraşıyordum ve bu kodu yazdım #include <optional> #include <tuple> #include <iostream> template <std::size_t N, typename Predicate, typename Tuple> consteval std::optional<std::size_t> find_if_impl(Predicate&& pred, Tuple&& t) noexcept { constexpr std::size_t I = std::tuple_size_v<std::decay_t<decltype(t)>> - N; if constexpr (N == 0u) { return std::nullopt; } else …

2
Önemsiz varsayılan yapıcı herhangi bir işlem yapmazsa neden malloc kullanarak önemsiz olarak oluşturulabilir nesneler oluşturamıyoruz?
Önemsiz varsayılan yapıcı hakkında cppreference alıntı yapılan aşağıdaki paragraf anlamakta zorlanıyorum . Stackoverflow aradım ama hala net bir cevap alamadım. Lütfen yardım edin. Önemsiz bir varsayılan kurucu, hiçbir eylem gerçekleştirmeyen bir kurucudur. C dili ile uyumlu tüm veri türleri (POD türleri) önemsiz şekilde varsayılan olarak yapılandırılabilir. Bununla birlikte, C'den farklı …

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.