Pertanyaan yang diberi tag «c++»

C ++ adalah bahasa pemrograman untuk tujuan umum. Awalnya dirancang sebagai ekstensi ke C dan memiliki sintaksis yang sama, tetapi sekarang bahasa yang sama sekali berbeda. Gunakan tag ini untuk pertanyaan tentang kode yang akan dikompilasi dengan kompiler C ++. Gunakan tag khusus versi untuk pertanyaan yang berkaitan dengan revisi standar spesifik [C ++ 11], [C ++ 14], [C ++ 17] atau [C ++ 20], dll.

2
Bagaimana kode templat ini untuk mendapatkan ukuran array bekerja?
Saya bertanya-tanya mengapa kode semacam ini bisa mendapatkan ukuran array tes? Saya tidak terbiasa dengan tata bahasa di template. Mungkin seseorang bisa menjelaskan arti kode di bawah template<typename,size_t>. Selain itu, tautan referensi juga disukai. #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 …
61 c++  visual-c++ 

10
Sign overflow di C ++ dan undefined behaviour (UB)
Saya ingin tahu tentang penggunaan kode seperti berikut ini int result = 0; int factor = 1; for (...) { result = ... factor *= 10; } return result; Jika loop berulang nkali, kemudian factordikalikan dengan waktu yang 10tepat n. Namun, factorhanya pernah digunakan setelah dikalikan 10total n-1kali. Jika kita …


3
Operator kesetaraan tidak dapat didefinisikan untuk implementasi operator pesawat ruang angkasa khusus di C ++ 20
Saya mengalami perilaku aneh dengan operator pesawat ruang angkasa baru <=>di C ++ 20. Saya menggunakan kompiler Visual Studio 2019 dengan /std:c++latest. Kode ini dikompilasi dengan baik, seperti yang diharapkan: #include <compare> struct X { int Dummy = 0; auto operator<=>(const X&) const = default; // Default implementation }; int …


5
Templat string ramah ke numerik dalam C ++
Di pustaka standar C ++ ada fungsi untuk mengkonversi dari string ke tipe numerik: stoi stol stoll stoul stoull stof stod stold tapi saya merasa membosankan untuk menggunakannya dalam kode templat. Mengapa tidak ada fungsi template seperti: template<typename T> T sto(...) untuk mengubah string ke tipe numerik? Saya tidak melihat …

2
Mengapa “menggunakan Sistem;” tidak dianggap praktik buruk?
Saya memiliki latar belakang C ++ dan saya sepenuhnya memahami dan setuju dengan jawaban atas pertanyaan ini: Mengapa “menggunakan namespace std;” dianggap praktik yang buruk? Jadi saya heran bahwa, setelah memiliki pengalaman dengan C # sekarang, saya melihat kebalikannya di sana: using Some.Namespace;secara harfiah digunakan di mana-mana. Setiap kali Anda …

2
Algoritma untuk menemukan solusi untuk A xor X = B + X
Bilangan bulat A dan B yang diberikan, temukan bilangan bulat X sehingga: A, B <2 * 1e18 A xor X = B + X Saya sangat ragu apakah mungkin untuk menyelesaikan persamaan ini menggunakan matematika. Ini adalah masalah pengkodean yang saya temui 3 tahun yang lalu dan bahkan sekarang saya …
46 c++  xor 

3
std :: vector (ab) menggunakan penyimpanan otomatis
Pertimbangkan cuplikan berikut: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } Jelas itu akan crash pada sebagian besar platform, karena ukuran tumpukan standar biasanya kurang dari 20MB. Sekarang pertimbangkan kode berikut: #include <array> #include <vector> int main() { using huge_type = std::array<char, 20*1024*1024>; std::vector<huge_type> v(1); …

3
Bagaimana saya bisa mendapatkan kedalaman std :: vektor multidimensi pada waktu kompilasi?
Saya memiliki fungsi yang mengambil multidimensi std::vectordan membutuhkan kedalaman (atau jumlah dimensi) untuk dilewatkan sebagai parameter templat. Alih-alih hardcoding nilai ini saya ingin menulis constexprfungsi yang akan mengambil std::vectordan mengembalikan kedalaman sebagai unsigned integernilai. Sebagai contoh: std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { …

2
Mengapa operator! = Dihapus dalam C ++ 20 untuk banyak tipe perpustakaan standar?
Menurut cppreference , std::type_info::operator!=dihapus dengan C ++ 20, bagaimanapun, std::type_info::operator==tampaknya tetap. Apa alasan di baliknya? Saya mungkin setuju untuk membandingkan ketidaksetaraan menjadi tidak berarti, tetapi kemudian membandingkan kesetaraan akan sama tidak berartinya, bukan? Demikian pula, operator!=dari banyak jenis perpustakaan standar lainnya, termasuk wadah seperti std::unordered_map::operator!=dan std::unordered_set::operator!=akan dihapus dalam C ++ …

5
Apakah mungkin untuk mencegah penghilangan anggota inisialisasi agregat?
Saya memiliki struct dengan banyak anggota dengan tipe yang sama, seperti ini struct VariablePointers { VariablePtr active; VariablePtr wasactive; VariablePtr filename; }; Masalahnya adalah jika saya lupa menginisialisasi salah satu anggota struct (mis wasactive), seperti ini: VariablePointers{activePtr, filename} Kompiler tidak akan mengeluh tentang hal itu, tetapi saya akan memiliki satu …


7
Cara idiomatik untuk membedakan dua konstruktor zero-arg
Saya memiliki kelas seperti ini: struct event_counts { uint64_t counts[MAX_COUNTERS]; event_counts() : counts{} {} // more stuff }; Biasanya saya ingin default (nol) menginisialisasi countsarray seperti yang ditunjukkan. Di lokasi tertentu yang diidentifikasi oleh profil, bagaimanapun, saya ingin menekan inisialisasi array, karena saya tahu array akan ditimpa, tetapi kompiler tidak …

2
Pendekatan berfungsi SFINAE di C ++
Saya menggunakan fungsi SFINAE dalam suatu proyek dan saya tidak yakin apakah ada perbedaan antara dua pendekatan berikut (selain gaya): #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template <class T, std::enable_if_t<std::is_same_v<T, double>>* = 0> …
40 c++  sfinae 

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.