Apakah pustaka standar C ++ 11 menyediakan utilitas apa pun untuk mengonversi dari a std::shared_ptrke std::unique_ptr, atau sebaliknya? Apakah operasi ini aman?
Apakah pustaka standar C ++ 11 menyediakan utilitas apa pun untuk mengonversi dari a std::shared_ptrke std::unique_ptr, atau sebaliknya? Apakah operasi ini aman?
C ++ tidak memiliki padanan dengan selfkata kunci PHP , yang mengevaluasi jenis kelas penutup. Cukup mudah untuk memalsukannya berdasarkan kelas: struct Foo { typedef Foo self; }; tapi saya harus menulis Foolagi. Mungkin saya akan mendapatkan kesalahan ini suatu hari dan menyebabkan bug...
Saya mendapati diri saya menulis ini beberapa saat yang lalu: template <long int T_begin, long int T_end> class range_class { public: class iterator { friend class range_class; public: long int operator *() const { return i_; } const iterator &operator ++() { ++i_; return *this; }...
Untuk mendukung jenis kunci yang ditentukan pengguna std::unordered_set<Key>dan std::unordered_map<Key, Value> harus menyediakan operator==(Key, Key)dan fungsi hash: struct X { int id; /* ... */ }; bool operator==(X a, X b) { return a.id == b.id; } struct MyHash { size_t...
Saya mencoba menggunakan std :: regex dalam kode C ++ 11, tetapi tampaknya dukungannya agak bermasalah. Sebuah contoh: #include <regex> #include <iostream> int main (int argc, const char * argv[]) { std::regex r("st|mt|tr"); std::cerr << "st|mt|tr" << " matches st? "...
Misalkan saya memiliki tiga objek yang dikompilasi, semuanya diproduksi oleh kompiler / versi yang sama : A dikompilasi dengan standar C ++ 11 B dikompilasi dengan standar C ++ 14 C dikompilasi dengan standar C ++ 17 Untuk kesederhanaan, anggaplah semua header ditulis dalam C ++ 11, hanya...
Berapa biaya overhead dari pointer pintar dibandingkan dengan pointer normal di C ++ 11? Dengan kata lain, apakah kode saya akan menjadi lebih lambat jika saya menggunakan petunjuk cerdas, dan jika demikian, seberapa lambat? Secara khusus, saya bertanya tentang C ++ 11 std::shared_ptrdan...
Saya telah membaca di beberapa tempat berbeda bahwa menggunakan literal string baru C ++ 11 dimungkinkan untuk menghitung hash string pada waktu kompilasi. Namun, tampaknya tidak ada yang siap untuk keluar dan mengatakan bahwa itu akan mungkin atau bagaimana itu akan dilakukan. Apakah ini...
Saya mengalami kesulitan memahami kebutuhan std::result_ofdalam C ++ 0x. Jika saya mengerti dengan benar, result_ofdigunakan untuk mendapatkan jenis yang dihasilkan dari pemanggilan objek fungsi dengan jenis parameter tertentu. Sebagai contoh: template <typename F, typename Arg> typename...
Dengan loop for berbasis rentang baru kita dapat menulis kode seperti for(auto x: Y) {} IMO mana yang merupakan peningkatan besar dari (misalnya) for(std::vector<int>::iterator x=Y.begin(); x!=Y.end(); ++x) {} Bisakah itu digunakan untuk mengulang dua loop simultan, seperti zipfungsi...
Kami sedang mengembangkan perangkat lunak kritis berkinerja tinggi dalam C ++. Di sana kita membutuhkan peta hash bersamaan dan menerapkannya. Jadi kami menulis patokan untuk mencari tahu, seberapa lambat peta hash serentak kami dibandingkan std::unordered_map. Tapi, std::unordered_mapsepertinya...
Apakah ada perbedaan antara throw()dan noexceptselain diperiksa pada waktu proses dan waktu kompilasi? Artikel Wikipedia C ++ 11 ini menyarankan bahwa penentu lemparan C ++ 03 sudah tidak digunakan lagi. Mengapa demikian, apakah noexceptcukup mampu untuk mencakup semua itu pada waktu...
Saya bertanya-tanya bagaimana cara memeriksa dengan benar apakah std::functionkosong. Pertimbangkan contoh ini: class Test { std::function<void(int a)> eventFunc; void registerEvent(std::function<void(int a)> e) { eventFunc = e; } void doSomething() { ... eventFunc(42);...
Mengapa ada kebutuhan untuk memiliki std::reference_wrapper? Dimana harus digunakan? Apa bedanya dengan penunjuk sederhana? Bagaimana performanya dibandingkan dengan pointer
Menurut sumber yang saya temukan, ekspresi lambda pada dasarnya diimplementasikan oleh kompilator yang membuat kelas dengan operator panggilan fungsi yang kelebihan beban dan variabel yang direferensikan sebagai anggota. Hal ini menunjukkan bahwa ukuran ekspresi lambda bervariasi, dan diberikan...
(Catatan: tupledan tiedapat diambil dari Boost atau C ++ 11.) Saat menulis struct kecil dengan hanya dua elemen, saya terkadang cenderung memilih a std::pair, karena semua hal penting sudah dilakukan untuk tipe data itu, seperti operator<untuk pengurutan yang ketat-lemah . Kerugiannya...
Apakah saya diperbolehkan untuk memindahkan elemen dari a std::initializer_list<T>? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) {...
Kembali ke C ++ setelah bertahun-tahun C # Saya bertanya-tanya apa cara modern - baca: C ++ 11 - untuk memfilter array, yaitu bagaimana kita bisa mencapai sesuatu yang mirip dengan kueri Linq ini: var filteredElements = elements.Where(elm => elm.filterProperty == true); Untuk memfilter...
Saya melihat kode di suatu tempat di mana seseorang memutuskan untuk menyalin objek dan kemudian memindahkannya ke anggota data kelas. Ini membuat saya bingung karena saya pikir inti dari pindah adalah untuk menghindari penyalinan. Berikut contohnya: struct S { S(std::string str) :...
Di C ++ 11 ada template variadic seperti ini: template< class T, class... Args > unique_ptr<T> make_unique( Args&&... args ) { return unique_ptr<T>(new T(std::forward<Args>(args)...)); } Ada beberapa keingintahuan tentang ini: Ekspresi