คำถามติดแท็ก c++

C ++ เป็นภาษาโปรแกรมทั่วไป เดิมได้รับการออกแบบให้เป็นส่วนขยายของ C และมีไวยากรณ์ที่คล้ายกัน แต่ตอนนี้มันเป็นภาษาที่แตกต่างอย่างสิ้นเชิง ใช้แท็กนี้สำหรับคำถามเกี่ยวกับรหัส (จะ) คอมไพล์ด้วยคอมไพเลอร์ C ++ ใช้แท็กเฉพาะรุ่นสำหรับคำถามที่เกี่ยวข้องกับการแก้ไขมาตรฐานเฉพาะ [C ++ 11], [C ++ 14], [C ++ 17] หรือ [C ++ 20] เป็นต้น

8
std :: vector คัดลอกวัตถุด้วย push_back หรือไม่?
หลังจากการสืบสวนกับ valgrind ฉันได้สรุปว่า std :: vector สร้างสำเนาของวัตถุที่คุณต้องการ push_back เป็นเรื่องจริงเหรอ? เวกเตอร์ไม่สามารถเก็บการอ้างอิงหรือตัวชี้ของวัตถุโดยไม่มีการคัดลอก! ขอบคุณ
169 c++  stl  stdvector 


4
auto && บอกอะไรเรา
ถ้าคุณอ่านรหัสเช่น auto&& var = foo(); ซึ่งfooเป็นฟังก์ชั่นใด ๆ Tกลับมาจากค่าของชนิด จากนั้นvarเป็น lvalue อ้างอิงประเภท rvalue Tไป แต่สิ่งนี้บ่งบอกถึงvarอะไร? หมายความว่าเราได้รับอนุญาตให้ขโมยทรัพยากรของvarหรือไม่ มีสถานการณ์ที่เหมาะสมเมื่อคุณควรใช้auto&&เพื่อบอกผู้อ่านโค้ดของคุณว่าคุณทำอย่างไรเมื่อคุณกลับมาunique_ptr<>เพื่อบอกว่าคุณมีความเป็นเจ้าของโดยเฉพาะ? และตัวอย่างเช่นT&&เมื่อTเป็นประเภทชั้นเรียน? ฉันแค่ต้องการที่จะเข้าใจหากมีกรณีการใช้งานอื่น ๆ ที่auto&&นอกเหนือจากในการเขียนโปรแกรมแม่แบบ; เหมือนที่กล่าวไว้ในตัวอย่างในบทความนี้Universal Referencesโดย Scott Meyers

30
C ++: ปัดเศษขึ้นเป็นพหุคูณใกล้เคียงที่สุดของตัวเลข
ตกลง - ฉันเกือบจะอายโพสต์ที่นี่ (และฉันจะลบถ้าใครโหวตให้ปิด) เพราะดูเหมือนว่าคำถามพื้นฐาน นี่เป็นวิธีที่ถูกต้องในการปัดเศษขึ้นเป็นทวีคูณของตัวเลขใน C ++ หรือไม่? ฉันรู้ว่ามีคำถามอื่น ๆ ที่เกี่ยวข้องกับเรื่องนี้ แต่ฉันสนใจเป็นพิเศษที่จะรู้ว่าอะไรคือวิธีที่ดีที่สุดในการทำ C ++: int roundUp(int numToRound, int multiple) { if(multiple == 0) { return numToRound; } int roundDown = ( (int) (numToRound) / multiple) * multiple; int roundUp = roundDown + multiple; int roundCalc = roundUp; return (roundCalc); …
168 c++  algorithm  rounding 

23
ข้อดีของการสลับคำสั่ง if-else
อะไรคือแนวปฏิบัติที่ดีที่สุดสำหรับการใช้switchคำสั่งกับการใช้ifคำสั่งสำหรับการunsignedแจกแจง30 รายการซึ่งประมาณ 10 รายการมีการกระทำที่คาดหวัง (ปัจจุบันคือการกระทำเดียวกัน) ต้องคำนึงถึงประสิทธิภาพและพื้นที่ แต่ไม่สำคัญ ฉันสรุปตัวอย่างแล้วดังนั้นอย่าเกลียดฉันสำหรับแบบแผนการตั้งชื่อ switch คำให้การ: // numError is an error enumeration type, with 0 being the non-error case // fire_special_event() is a stub method for the shared processing switch (numError) { case ERROR_01 : // intentional fall-through case ERROR_07 : // intentional fall-through case ERROR_0A …

12
วิธีสร้างและใช้ Google TensorFlow C ++ api
ฉันกระตือรือร้นที่จะเริ่มใช้ห้องสมุด Tensorflow ใหม่ของ Google ใน C ++ เว็บไซต์และเอกสารไม่ชัดเจนจริงๆในแง่ของวิธีการสร้าง C ++ API ของโครงการและฉันไม่รู้ว่าจะเริ่มต้นอย่างไร ใครบางคนที่มีประสบการณ์ช่วยด้วยการค้นพบและแบ่งปันคำแนะนำในการใช้ C ++ API ของเมตริกซ์ได้หรือไม่
168 c++  tensorflow 

9
กฎการแปลงประเภทโดยนัยในตัวดำเนินการ C ++
ฉันอยากรู้เรื่องเวลาที่ควรโยน กฎการแปลงประเภทโดยนัยคืออะไรใน C ++ เมื่อทำการเพิ่มทวีคูณเป็นต้นตัวอย่างเช่น int + float = ? int * float = ? float * int = ? int / float = ? float / int = ? int / int = ? int ^ float = ? และอื่น ๆ ... นิพจน์จะได้รับการประเมินว่าเป็นประเภทที่แม่นยำกว่าเสมอหรือไม่ กฎแตกต่างกันสำหรับ Java หรือไม่ โปรดแก้ไขให้ฉันด้วยถ้าฉันตอบคำถามนี้ไม่ถูกต้อง
168 c++  casting  implicit 

20
ข้อดีของ std :: for_each สำหรับลูป
มีข้อดีของการใด ๆstd::for_eachมากกว่าforห่วง? สำหรับฉันstd::for_eachดูเหมือนว่าจะเป็นอุปสรรคต่อการอ่านรหัสเท่านั้น ทำไมมาตรฐานการเข้ารหัสบางอย่างแนะนำให้ใช้?
168 c++  stl  foreach  coding-style 

6
ถ้าฉันคัดลอกทุ่นไปยังตัวแปรอื่นพวกมันจะเท่ากันหรือไม่?
ฉันรู้ว่าการใช้==เพื่อตรวจสอบความเท่าเทียมกันของตัวแปร floating-point นั้นไม่ใช่วิธีที่ดี แต่ฉันแค่อยากรู้ว่าด้วยคำสั่งต่อไปนี้: float x = ... float y = x; assert(y == x) ตั้งแต่yคัดลอกมาจากxการยืนยันจะเป็นจริงหรือไม่


6
วิธีการเปิดใช้งาน C ++ 11 ใน Qt Creator?
ชื่อค่อนข้างสื่อความหมายได้เอง ฉันดาวน์โหลด Qt Creator 2.7.0 แล้วและฉันพยายามรวบรวมรหัส C ++ 11 พื้นฐาน: int my_array[5] = {1, 2, 3, 4, 5}; for(int &x : my_array) { x *= 2; } ฉันได้รับข้อผิดพลาดต่อไปนี้: range based for loops are not allowed in c++ 98 mode แต่ตามบทความนี้ผู้สร้าง Qt รุ่นนี้รองรับ C ++ 11 ดังนั้นฉันจะเปิดใช้งานได้อย่างไร
167 c++  qt  c++11 

4
C ++ Dynamic Shared Library บน Linux
นี่คือการติดตามเพื่อรวบรวมห้องสมุดที่ใช้ร่วมกันแบบไดนามิกที่มีกรัม ++ ฉันกำลังพยายามสร้างไลบรารีคลาสที่แบ่งใช้ใน C ++ บน Linux ฉันสามารถที่จะได้รับห้องสมุดเพื่อรวบรวมและผมสามารถเรียกบางส่วนของ (Non-class) ฟังก์ชั่นการใช้บทเรียนที่ผมพบว่าที่นี่และที่นี่ ปัญหาของฉันเริ่มต้นเมื่อฉันพยายามใช้คลาสที่กำหนดไว้ในไลบรารี บทช่วยสอนที่สองที่ฉันเชื่อมโยงเพื่อแสดงวิธีโหลดสัญลักษณ์สำหรับการสร้างวัตถุของคลาสที่กำหนดไว้ในไลบรารี แต่หยุดสั้น ๆ ในการใช้วัตถุเหล่านั้นเพื่อทำงานให้เสร็จ ไม่มีใครทราบบทช่วยสอนที่สมบูรณ์ยิ่งขึ้นสำหรับการสร้างไลบรารี่ C ++ ที่แชร์กันซึ่งแสดงวิธีใช้คลาสเหล่านั้นในการปฏิบัติการแยกต่างหาก บทช่วยสอนที่เรียบง่ายมากที่แสดงการสร้างวัตถุใช้งาน (getters และ setters แบบธรรมดาจะใช้ได้) และการลบจะยอดเยี่ยม ลิงก์หรือการอ้างอิงถึงโค้ดโอเพนซอร์สบางตัวที่แสดงให้เห็นถึงการใช้ไลบรารีคลาสที่ใช้ร่วมกันจะดีพอ ๆ กัน แม้ว่าคำตอบจากcodelogicและnimrodmทำงานได้ฉันแค่อยากจะเพิ่มว่าฉันหยิบสำเนาของBeginning Linux Programmingตั้งแต่ถามคำถามนี้และบทแรกของมันมีตัวอย่างรหัส C และคำอธิบายที่ดีสำหรับการสร้างและใช้ทั้งห้องสมุดแบบคงที่และใช้ร่วมกัน . ตัวอย่างเหล่านี้สามารถผ่าน Google Book Search ในรุ่นเก่าของหนังสือเล่มนั้น

7
วิธี“ คืนวัตถุ” ใน C ++ ได้อย่างไร
ฉันรู้ว่าชื่อฟังดูคุ้นหูเพราะมีคำถามคล้าย ๆ กันหลายอย่าง แต่ฉันขอปัญหาที่แตกต่าง (ฉันรู้ถึงความแตกต่างระหว่างการมีสิ่งของในกองซ้อน ใน Java ฉันสามารถกลับไปอ้างอิงถึงวัตถุ "ท้องถิ่น" public Thing calculateThing() { Thing thing = new Thing(); // do calculations and modify thing return thing; } ใน C ++ เพื่อทำสิ่งที่คล้ายกันฉันมี 2 ตัวเลือก (1) ฉันสามารถใช้การอ้างอิงเมื่อใดก็ตามที่ฉันต้องการ "ส่งคืน" วัตถุ void calculateThing(Thing& thing) { // do calculations and modify thing } จากนั้นใช้มันเช่นนี้ Thing …

16
โปรแกรมไม่สามารถเริ่มทำงานได้เนื่องจาก libgcc_s_dw2-1.dll หายไป
ฉันได้สร้างโปรแกรมอย่างง่ายใน C ++ ด้วย Code :: Blocks ถ้าฉันเรียกใช้จาก Code :: Blocks มันทำงานได้อย่างถูกต้อง แต่ถ้าฉันรันโดยดับเบิลคลิกที่ไฟล์ปฏิบัติการหน้าต่างจะปรากฏขึ้นพร้อมกับข้อความนี้: โปรแกรมไม่สามารถเริ่มทำงานได้เนื่องจาก libgcc_s_dw2-1.dll หายไปจากคอมพิวเตอร์ของคุณ ลองติดตั้งโปรแกรมใหม่เพื่อแก้ไขปัญหานี้ ดังนั้นปัญหาคืออะไร ฉันต้องทำอย่างไรเพื่อแก้ไข
167 c++  windows  mingw 

11
ฉันจะล้าง std :: queue อย่างมีประสิทธิภาพได้อย่างไร
ฉันใช้ std :: queue สำหรับการใช้คลาส JobQueue (โดยทั่วไปคลาสนี้ดำเนินการแต่ละงานในลักษณะ FIFO) ในสถานการณ์สมมติหนึ่งฉันต้องการล้างคิวในนัดเดียว (ลบงานทั้งหมดออกจากคิว) ฉันไม่เห็นวิธีการที่ชัดเจนใด ๆ ที่มีอยู่ใน std :: queue class ฉันจะใช้วิธีการที่ชัดเจนสำหรับคลาส JobQueue ได้อย่างไร ฉันมีวิธีแก้ปัญหาง่ายๆอย่างหนึ่งในการวนรอบ แต่ฉันกำลังมองหาวิธีที่ดีกว่า //Clears the job queue void JobQueue ::clearJobs() { // I want to avoid pop in a loop while (!m_Queue.empty()) { m_Queue.pop(); } }
166 c++  stl  queue 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.