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

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

15
ผ่านอาร์เรย์ 2D ไปยังฟังก์ชัน C ++
ฉันมีฟังก์ชั่นที่ฉันต้องการใช้เป็นตัวแปรอาร์เรย์ขนาดสองมิติ จนถึงตอนนี้ฉันมีสิ่งนี้: void myFunction(double** myArray){ myArray[x][y] = 5; etc... } และฉันได้ประกาศอาร์เรย์ที่อื่นในรหัสของฉัน: double anArray[10][10]; อย่างไรก็ตามการโทรmyFunction(anArray)ทำให้ฉันมีข้อผิดพลาด ฉันไม่ต้องการที่จะคัดลอกอาร์เรย์เมื่อฉันผ่านมันใน. การเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นในควรจะปรับเปลี่ยนสถานะของmyFunction anArrayหากฉันเข้าใจอย่างถูกต้องฉันเพียงต้องการส่งผ่านเป็นอาร์กิวเมนต์ตัวชี้ไปยังอาร์เรย์ 2 มิติ ฟังก์ชั่นต้องยอมรับอาร์เรย์ที่มีขนาดต่างกันด้วย ตัวอย่างเช่น, [10][10]และ[5][5]. ฉันจะทำสิ่งนี้ได้อย่างไร

30
พิมพ์ 1 ถึง 1,000 โดยไม่มีลูปหรือเงื่อนไข
ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ภารกิจ : พิมพ์ตัวเลขตั้งแต่ 1 ถึง 1,000 โดยไม่ต้องใช้คำสั่งวนซ้ำหรือเงื่อนไขใด ๆ อย่าเพิ่งเขียนprintf()หรือcoutสั่ง 1,000 ครั้ง คุณจะทำเช่นนั้นโดยใช้ C หรือ C ++ ได้อย่างไร
323 c++  c  printf 

4
การยกเลิกโปรแกรมสำหรับขั้นตอนการทำงานใน CPU ตระกูล Intel Sandybridge
ฉันกำลังใช้สมองของฉันเป็นเวลาหนึ่งสัปดาห์เพื่อพยายามทำงานนี้ให้เสร็จและฉันหวังว่าจะมีใครบางคนที่นี่สามารถพาฉันไปสู่เส้นทางที่ถูกต้อง ให้ฉันเริ่มต้นด้วยคำแนะนำของผู้สอน: การมอบหมายของคุณตรงข้ามกับการมอบหมายห้องปฏิบัติการครั้งแรกของเราซึ่งเป็นการเพิ่มประสิทธิภาพของโปรแกรมหมายเลขเฉพาะ จุดประสงค์ของคุณในการมอบหมายนี้คือการหยุดโปรแกรมให้น้อยที่สุดนั่นคือทำให้มันช้าลง ทั้งสองนี้เป็นโปรแกรมที่ใช้ CPU มาก ใช้เวลาสองสามวินาทีในการทำงานบนพีซีในห้องปฏิบัติการของเรา คุณไม่สามารถเปลี่ยนอัลกอริทึม ในการ deoptimize โปรแกรมใช้ความรู้ของคุณในการทำงานของไปป์ไลน์ Intel i7 ลองจินตนาการถึงวิธีการสั่งซื้อเส้นทางการสอนใหม่เพื่อแนะนำ WAR, RAW และอันตรายอื่น ๆ คิดถึงวิธีลดประสิทธิภาพของแคชให้เล็กที่สุด ไร้ความสามารถอย่างบ้าคลั่ง ที่ได้รับมอบหมายให้เลือกโปรแกรม Whetstone หรือ Monte-Carlo ความคิดเห็นแคชประสิทธิภาพส่วนใหญ่จะใช้เฉพาะกับ Whetstone แต่ฉันเลือกโปรแกรมจำลอง Monte-Carlo: // Un-modified baseline for pessimization, as given in the assignment #include <algorithm> // Needed for the "max" function #include <cmath> #include …

23
วัตถุประสงค์ของการใช้วงเล็บปีกกา (เช่น {}) สำหรับบรรทัดเดียวคือถ้าหรือวนรอบคืออะไร?
ฉันกำลังอ่านบันทึกการบรรยายของอาจารย์ C ++ ของฉันและเขาเขียนสิ่งต่อไปนี้: ใช้การเยื้อง // ตกลง ไม่ต้องพึ่งพาลำดับความสำคัญของโอเปอเรเตอร์ - ใช้เครื่องหมายวงเล็บ // OK ใช้บล็อก {} ทุกครั้ง - แม้สำหรับบรรทัดเดียว // ไม่เป็นไรทำไม ??? วัตถุ Const ที่ด้านซ้ายของการเปรียบเทียบ // ตกลง ใช้เครื่องหมายที่ไม่ได้ลงชื่อสำหรับตัวแปรที่> = 0 // เคล็ดลับดี ตั้งค่าตัวชี้เป็น NULL หลังจากลบ - การป้องกันการลบสองครั้ง // ไม่เลว เทคนิคที่สามไม่ชัดเจนสำหรับฉัน: ฉันจะได้อะไรจากการวางหนึ่งบรรทัดใน { ... } ? ตัวอย่างเช่นใช้รหัสแปลก ๆ นี้: int j = 0; …

8
C ++ 11 reverse-based for-loop สำหรับช่วง
มีอะแดปเตอร์คอนเทนเนอร์ที่จะเปลี่ยนทิศทางของตัววนซ้ำเพื่อให้ฉันสามารถวนซ้ำในคอนเทนเนอร์โดยย้อนกลับด้วย for-loop for range ด้วยตัววนซ้ำอย่างชัดเจนฉันจะแปลงสิ่งนี้: for (auto i = c.begin(); i != c.end(); ++i) { ... เป็นนี้ for (auto i = c.rbegin(); i != c.rend(); ++i) { ... ฉันต้องการแปลงสิ่งนี้: for (auto& i: c) { ... สำหรับสิ่งนี้: for (auto& i: std::magic_reverse_adapter(c)) { ... มีอะไรแบบนี้หรือฉันต้องเขียนเองเหรอ?
321 c++  c++11  ranged-loops 

4
การรวม C ++ และ C - #ifdef __cplusplus ทำงานอย่างไร
ฉันกำลังทำงานในโครงการที่มีรหัสCดั้งเดิมมากมาย เราได้เริ่มเขียนใน C ++ โดยมีเจตนาที่จะแปลงรหัสดั้งเดิมในที่สุดเช่นกัน ฉันสับสนเล็กน้อยเกี่ยวกับการโต้ตอบของCและ C ++ ฉันเข้าใจว่าการห่อรหัสCด้วยextern "C"คอมไพเลอร์ C ++ จะไม่ทำให้ชื่อของรหัสCเสื่อมลงแต่ฉันไม่แน่ใจว่าจะใช้สิ่งนี้ได้อย่างไร ดังนั้นที่ด้านบนของไฟล์ส่วนหัวCแต่ละไฟล์ (หลังจากที่มียามรวม) เรามี #ifdef __cplusplus extern "C" { #endif และที่ด้านล่างเราเขียน #ifdef __cplusplus } #endif ในระหว่างสองเรามีทั้งหมดของเรารวมถึง typedefs และฟังก์ชั่นต้นแบบ ฉันมีคำถามสองสามข้อเพื่อดูว่าฉันเข้าใจสิ่งนี้ถูกต้องหรือไม่: ถ้าฉันมีไฟล์ C ++ A.hh ซึ่งรวมถึงไฟล์ส่วนหัวC Bh รวมถึงไฟล์ส่วนหัวCอีกCh วิธีนี้ทำงานอย่างไร ฉันคิดว่าเมื่อคอมไพเลอร์เข้าสู่ Bh __cplusplusจะถูกกำหนดดังนั้นมันจะล้อมโค้ดด้วยextern "C" (และ__cplusplusจะไม่ถูกกำหนดภายในบล็อกนี้) ดังนั้นเมื่อเข้าสู่ Ch แล้ว __cplusplusจะไม่ถูกกำหนดและรหัสจะไม่ถูกรวมเข้าด้วย extern "C"กัน …

30
วิธีที่ง่ายที่สุดในการทำให้โปรแกรม C ++ ผิดพลาดคืออะไร
ฉันกำลังพยายามสร้างโปรแกรม Python ที่เชื่อมต่อกับกระบวนการขัดข้องที่แตกต่างกัน น่าเสียดายที่โปรแกรมที่ฉันกำลังเชื่อมต่ออยู่นั้นไม่ได้ผิดพลาดอย่างน่าเชื่อถือ! ดังนั้นฉันต้องการสร้างโปรแกรม C ++ อย่างรวดเร็วที่ล้มเหลวในจุดประสงค์ แต่จริงๆแล้วฉันไม่รู้วิธีที่ดีที่สุดและสั้นที่สุดในการทำเช่นนั้นไม่มีใครรู้ว่าควรใส่อะไรระหว่าง: int main() { crashyCodeGoesHere(); } เพื่อทำให้โปรแกรม C ++ ของฉันทำงานล้มเหลวอย่างน่าเชื่อถือ
318 c++  crash 

13
คุณ (จริงๆ) เขียนรหัสที่ปลอดภัยยกเว้น? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา การจัดการข้อยกเว้น (EH) ดูเหมือนจะเป็นมาตรฐานปัจจุบันและด้วยการค้นหาเว็บฉันไม่สามารถค้นหาความคิดแปลกใหม่หรือวิธีการที่พยายามปรับปรุงหรือแทนที่มัน (ดีมีความแตกต่างบางอย่างอยู่ แต่ไม่มีอะไรแปลกใหม่) แม้ว่าคนส่วนใหญ่ดูเหมือนจะเพิกเฉยหรือยอมรับมัน EH มีข้อเสียอย่างใหญ่หลวง: ข้อยกเว้นจะไม่สามารถมองเห็นได้จากโค้ดและสร้างจุดออกที่เป็นไปได้มากมาย โจเอลซอฟแวร์เขียนบทความเกี่ยวกับเรื่องนี้ การเปรียบเทียบgotoกับความสมบูรณ์แบบนั้นทำให้ฉันคิดอีกครั้งเกี่ยวกับ EH ฉันพยายามหลีกเลี่ยง EH และใช้ค่าส่งคืนการโทรกลับหรืออะไรก็ตามที่เหมาะกับวัตถุประสงค์ แต่เมื่อคุณต้องเขียนรหัสที่เชื่อถือได้คุณก็ไม่สามารถเพิกเฉยต่อ EH ได้ในวันนี้ : มันเริ่มต้นด้วยการnew, ซึ่งอาจทำให้เกิดข้อยกเว้นแทนที่จะส่งกลับ 0 (เหมือนในสมัยก่อน) สิ่งนี้ทำให้เกี่ยวกับบรรทัดของรหัส C ++ ใด ๆ ที่เสี่ยงต่อการยกเว้น และสถานที่อื่น ๆ ใน C + + รหัสพื้นฐานโยนข้อยกเว้น ... std lib ทำมันและอื่น ๆ รู้สึกเหมือนกำลังเดินบนพื้นที่สั่นคลอนดังนั้นตอนนี้เราถูกบังคับให้ดูแลเรื่องข้อยกเว้น! …

18
ฉันจะรู้ได้อย่างไรว่าส่วนใดในรหัสไม่เคยใช้?
ฉันมีรหัส C ++ ดั้งเดิมที่ฉันควรจะเอารหัสที่ไม่ได้ใช้ออก ปัญหาคือรหัสฐานมีขนาดใหญ่ ฉันจะทราบได้อย่างไรว่ารหัสใดไม่เคยถูกเรียกใช้ / ไม่เคยใช้?

14
#pragma ปลอดภัยครั้งหนึ่งเคยมีผู้พิทักษ์หรือไม่
ฉันได้อ่านแล้วว่ามีการเพิ่มประสิทธิภาพคอมไพเลอร์เมื่อใช้งาน#pragma onceซึ่งอาจทำให้การรวบรวมเร็วขึ้น ฉันรู้ว่าไม่เป็นมาตรฐานและอาจก่อให้เกิดปัญหาความเข้ากันได้ข้ามแพลตฟอร์ม นี่เป็นสิ่งที่สนับสนุนโดยคอมไพเลอร์ที่ทันสมัยที่สุดบนแพลตฟอร์มที่ไม่ใช่ windows (gcc) หรือไม่? ฉันต้องการหลีกเลี่ยงปัญหาการรวบรวมแพลตฟอร์ม แต่ยังต้องการหลีกเลี่ยงการทำงานพิเศษของการ์ดสำรอง: #pragma once #ifndef HEADER_H #define HEADER_H ... #endif // HEADER_H ฉันควรจะกังวลหรือไม่ ฉันควรจะใช้พลังงานทางจิตเพิ่มเติมในเรื่องนี้หรือไม่?

11
การเรียงลำดับเวกเตอร์ตามลำดับจากมากไปน้อย
ฉันควรใช้ std::sort(numbers.begin(), numbers.end(), std::greater<int>()); หรือ std::sort(numbers.rbegin(), numbers.rend()); // note: reverse iterators จะจัดเรียงเวกเตอร์ตามลำดับจากมากไปน้อยเป็นอย่างไร มีประโยชน์หรือข้อเสียเปรียบกับวิธีใดวิธีหนึ่งหรือไม่?
310 c++  sorting  stl  vector  iterator 

8
วิธีการใช้ตัววนซ้ำแบบ STL และหลีกเลี่ยงข้อผิดพลาดทั่วไป?
ฉันสร้างคอลเล็กชันที่ฉันต้องการให้ตัววนซ้ำ STL เข้าถึงแบบสุ่ม ฉันค้นหาตัวอย่างการใช้ตัววนซ้ำ แต่ฉันไม่พบสิ่งใด ฉันรู้เกี่ยวกับความจำเป็นในการโอเวอร์โหลด[]และ*ตัวดำเนินการ ข้อกำหนดสำหรับตัววนซ้ำเป็น "ลักษณะ STL" และข้อผิดพลาดอื่น ๆ ที่ควรหลีกเลี่ยง (ถ้ามี) คืออะไร บริบทเพิ่มเติม: นี่สำหรับห้องสมุดและฉันไม่ต้องการแนะนำการพึ่งพาใด ๆ เว้นแต่ว่าฉันต้องการ ฉันเขียนคอลเลกชันของตัวเองเพื่อให้สามารถใช้งานร่วมกันได้ของไบนารีระหว่าง C ++ 03 และ C ++ 11 ด้วยคอมไพเลอร์เดียวกัน (ดังนั้น STL ที่ไม่น่าจะทำลาย)

19
ฉันสามารถใช้ตัวแบ่งเพื่อออกจากลูปหลาย ๆ อัน 'สำหรับ' ลูปได้หรือไม่
เป็นไปได้ไหมที่จะใช้breakฟังก์ชั่นนี้เพื่อออกจากforลูปซ้อนหลายอัน? ถ้าเป็นเช่นนั้นคุณจะทำสิ่งนี้อย่างไร คุณสามารถควบคุมจำนวนการbreakออกจากลูปได้หรือไม่

7
คัดลอกไฟล์ด้วยวิธีที่ปลอดภัยและมีประสิทธิภาพ
ฉันค้นหาวิธีที่ดีในการคัดลอกไฟล์ (ไบนารีหรือข้อความ) ฉันเขียนหลายตัวอย่างทุกคนทำงานได้ แต่ฉันต้องการฟังความคิดเห็นของโปรแกรมเมอร์ที่มีประสบการณ์ ฉันพลาดตัวอย่างที่ดีและค้นหาวิธีการทำงานกับ C ++ ANSI-C-WAY #include <iostream> #include <cstdio> // fopen, fclose, fread, fwrite, BUFSIZ #include <ctime> using namespace std; int main() { clock_t start, end; start = clock(); // BUFSIZE default is 8192 bytes // BUFSIZE of 1 means one chareter at time // good values …
305 c++  file-io 

13
เทมเพลตฟังก์ชันสมาชิกระดับสามารถเป็นเสมือนได้หรือไม่?
ฉันได้ยินมาว่าแม่แบบฟังก์ชันคลาสสมาชิก C ++ ไม่สามารถเป็นเสมือนได้ มันเป็นเรื่องจริงเหรอ? หากพวกเขาสามารถเป็นเสมือนจริงตัวอย่างของสถานการณ์ที่จะใช้ฟังก์ชั่นดังกล่าวคืออะไร?

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