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

4
Std :: dönüşümü std :: back_inserter ile kullanmak geçerli midir?
Cppreference için şu örnek kod vardır std::transform: std::vector<std::size_t> ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -> std::size_t { return c; }); Ancak şunu da söylüyor: std::transformunary_opveya 'nın siparişe göre uygulanmasını garanti etmez binary_op. Bir diziye sırayla bir işlev uygulamak veya bir dizinin öğelerini değiştiren bir işlevi uygulamak için kullanın std::for_each. …

2
Önemsiz nesne için "bu" da yerleşimi yeni aramak güvenli midir?
Bu sorunun zaten birkaç kez sorulduğunu biliyorum, ancak bu özel durum için bir cevap bulamadım. Diyelim ki herhangi bir kaynağa sahip olmayan ve boş yıkıcı ve varsayılan kurucuya sahip önemsiz bir sınıfım var. Sınıf içi başlatma ile bir avuç üye değişkeni vardır; onlardan biri değil const. Yeniden başlatma ve deInitelle …

3
Dökülen vektörlerin vektöründe tanımlanmamış davranış
Bu kod neden tanımsız görünen, başlatılmamış bir tam sayı yazıyor? #include <iostream> #include <vector> using namespace std; int main() { for (int i : vector<vector<int>>{{77, 777, 7777}}[0]) cout << i << ' '; } Çıktının olmasını bekliyordum 77 777 7777. Bu kodun tanımsız olması gerekiyor mu?
19 c++ 

2
int numeral -> işaretçi dönüştürme kuralları
Aşağıdaki kodu düşünün. void f(double p) {} void f(double* p) {} int main() { f(1-1); return 0; } MSVC 2017 bunu derlemiyor. Aynı şekilde 1-1olduğu gibi belirsiz bir aşırı yüklenmiş çağrı olduğunu 0ve bu nedenle dönüştürülebileceğini gösterir double*. Diğer hileler gibi 0x0, 0Lya static_cast<int>(0), ya çalışmaz. Bir const int Zero …
19 c++  visual-c++  types 

3
c ++ Döngü yazdırma yanlış değerleri için içerideki dişler
C ++ Multi-threading anlamaya çalışıyorum, ama ben bu sorun sıkışmış: Eğer bir for döngüsünde iş parçacıkları başlatmak yanlış değerler yazdırın. Bu kod: #include <iostream> #include <list> #include <thread> void print_id(int id){ printf("Hello from thread %d\n", id); } int main() { int n=5; std::list<std::thread> threads={}; for(int i=0; i<n; i++ ){ threads.emplace_back(std::thread([&](){ …


1
Std :: atom yapıcı neden C ++ 14 ve C ++ 17'de farklı davranıyor?
C ++ 11 ile bir projede çalışıyorum ve aşağıdaki kodu denedim #include <atomic> struct A { std::atomic_int idx = 1; }; int main() { return 0; } Derleyici hatası alıyorum error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]' std::atomic_int idx = 1; ^ Aynı sonuç C ++ …
19 c++  c++14  c++17  stdatomic 


2
Same_as konsepti tip eşitliğini neden iki kez kontrol ediyor?
Https://en.cppreference.com/w/cpp/concepts/same_as adresinde same_as konseptinin olası uygulanışına baktığımda garip bir şey olduğunu fark ettim. namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>; İlk soru, bir SameHelperkavramın neden açıklandığıdır? İkinci neden …
19 c++  c++20  concept 

5
Sarkan const ref nasıl çözülür
Aşağıdaki kısa program #include <vector> #include <iostream> std::vector<int> someNums() { return {3, 5, 7, 11}; } class Woop { public: Woop(const std::vector<int>& nums) : numbers(nums) {} void report() { for (int i : numbers) std::cout << i << ' '; std::cout << '\n'; } private: const std::vector<int>& numbers; }; int …
18 c++ 


3
Lambda kapatma değerleri, değer referans parametreleri olarak geçirilebilir
lvalueLambda kapaklarının her zaman rvaluefonksiyon parametresi olarak geçebileceğini buldum . Aşağıdaki basit gösterilere bakın. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a `lvalue` function …


2
Değişken başlatma üzerine atlamak kötü biçimlendirilmiş mi yoksa tanımlanmamış davranışa neden oluyor mu?
Bu kodu düşünün: void foo() { goto bar; int x = 0; bar: ; } GCC ve Clang bunu reddeder , çünkü bar:değişken başlatmayı atlar. MSVC (kullanılmasının haricinde hiç şikayet etmiyor xsonra bar:nedenleri bir uyarı). Şununla benzer bir şey yapabiliriz switch: void foo() { switch (0) { int x = …

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 

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.