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

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


6
ขนาดสแต็กสูงสุดของโปรแกรม C / C ++
ฉันต้องการทำ DFS บนอาร์เรย์ 100 X 100 (พูดว่าองค์ประกอบของอาร์เรย์แสดงถึงโหนดกราฟ) ดังนั้นสมมติว่ากรณีที่เลวร้ายที่สุดความลึกของการเรียกฟังก์ชันแบบเรียกซ้ำอาจสูงถึง 10,000 โดยการเรียกแต่ละครั้งใช้เวลาไม่เกิน 20 ไบต์ ดังนั้นจึงเป็นไปได้ว่ามีความเป็นไปได้ที่จะเกิด stackoverflow หรือไม่? ขนาดสูงสุดของสแต็กใน C / C ++ คืออะไร? โปรดระบุสำหรับ gcc สำหรับทั้ง 1) cygwin บน Windows 2) Unix ข้อ จำกัด ทั่วไปคืออะไร?
115 c++  c  stack 

3
ข้อดีของการใช้การอ้างอิงการส่งต่อแบบอิงตามช่วงสำหรับลูปคืออะไร?
const auto&จะเพียงพอถ้าฉันต้องการดำเนินการอ่านอย่างเดียว อย่างไรก็ตามฉันได้ชน for (auto&& e : v) // v is non-const สองสามครั้งเมื่อเร็ว ๆ นี้ สิ่งนี้ทำให้ฉันสงสัย: เป็นไปได้ไหมว่าในบางกรณีมุมที่คลุมเครือมีประโยชน์ด้านประสิทธิภาพในการใช้การอ้างอิงการส่งต่อเมื่อเทียบกับauto&หรือconst auto&? ( shared_ptrเป็นผู้ต้องสงสัยคดีมุมอับ) อัปเดต สองตัวอย่างที่ฉันพบในรายการโปรดของฉัน: ข้อเสียของการใช้การอ้างอิง const เมื่อทำซ้ำในประเภทพื้นฐานหรือไม่? ฉันสามารถทำซ้ำค่าของแผนที่โดยใช้ range-based for loop ได้หรือไม่? โปรดตั้งสมาธิกับคำถาม: เหตุใดฉันจึงต้องการใช้ auto && แบบอิงตามช่วงสำหรับลูป

12
GUI ที่เข้ารหัสด้วยมือเทียบกับ GUI ของนักออกแบบ Qt [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบได้ด้วยข้อเท็จจริงและการอ้างอิงโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันใช้เวลาช่วงวันหยุดนี้เพื่อเรียนรู้การเขียนแอปพลิเคชัน Qt ฉันอ่านเกี่ยวกับ Qt Designer เมื่อไม่กี่ชั่วโมงที่ผ่านมาซึ่งทำให้ฉันสงสัยว่าคนที่เขียนแอปพลิเคชันในโลกแห่งความเป็นจริงใน Qt ใช้อะไรในการออกแบบ GUI ของตน จริงๆแล้วคนทั่วไปออกแบบ GUI อย่างไร? สำหรับคนหนึ่งฉันพบว่าการเขียนโค้ดด้วยมือนั้นง่ายกว่าการใช้ Qt Designer แม้ว่าสำหรับ GUI Designer ที่ซับซ้อนอาจสมเหตุสมผล GUI ขนาดใหญ่อาจเป็นไปได้โดยใช้ Designer แต่เมื่อเวลาผ่านไปพวกเขาอาจจัดการได้ยากมากเมื่อความซับซ้อนเพิ่มขึ้น (นี่เป็นเพียงความคิดเห็นของฉัน) ฉันยังดาวน์โหลดซอร์สโค้ด AmaroK เพื่อดูว่าคนเหล่านั้นกำลังทำอะไรอยู่และพบการเรียก addWidget () และเพื่อน ๆ มากมาย แต่ไม่มีไฟล์ XML ใดที่สร้างโดย Designer (ยกเว้น: AmaroK ต้องเป็นแอปพลิเคชั่นโปรดของฉันเลยทีเดียว ทุกแพลตฟอร์ม) …



10
ปิดใช้งานข้อผิดพลาดคำเตือนเดียว
มีวิธีปิดการใช้งานคำเตือนเพียงบรรทัดเดียวในไฟล์ cpp ด้วย visual studio หรือไม่? ตัวอย่างเช่นหากฉันจับข้อยกเว้นและไม่ได้จัดการฉันได้รับข้อผิดพลาด 4101 (ตัวแปรภายในเครื่องที่ไม่ได้อ้างอิง) มีวิธีละเว้นสิ่งนี้ในฟังก์ชันนั้นหรือไม่ แต่รายงานในหน่วยคอมไพล์หรือไม่ ในขณะนี้ฉันวางไว้#pragma warning (disable : 4101)ที่ด้านบนสุดของไฟล์ แต่เห็นได้ชัดว่ามันปิดสำหรับทั้งหน่วย

4
sizeof (bool) ถูกกำหนดไว้ในมาตรฐานภาษา C ++ หรือไม่
ฉันไม่พบคำตอบในเอกสารมาตรฐาน มาตรฐานของภาษา C ++ จำเป็นต้องsizeof(bool)เป็น 1 เสมอ (สำหรับ 1 ไบต์) หรือมีการกำหนดการใช้งานขนาดนี้หรือไม่

23
รับเส้นทางของปฏิบัติการ
ฉันรู้ว่ามีการถามคำถามนี้มาก่อน แต่ฉันยังไม่เห็นคำตอบที่น่าพอใจหรือมีคำว่า "ไม่ทำไม่ได้" ดังนั้นฉันจะถามอีกครั้ง! สิ่งที่ฉันต้องการทำคือรับพา ธ ไปยังไฟล์ปฏิบัติการที่กำลังทำงานอยู่ไม่ว่าจะเป็นพา ธ สัมบูรณ์หรือสัมพันธ์กับตำแหน่งที่เรียกใช้ไฟล์ปฏิบัติการในรูปแบบที่ไม่ขึ้นกับแพลตฟอร์ม ฉันแม้ว่า boost :: filesystem :: initial_path เป็นคำตอบสำหรับปัญหาของฉัน แต่ดูเหมือนว่าจะจัดการเฉพาะส่วนที่ 'ไม่ขึ้นกับแพลตฟอร์ม' ของคำถาม - มันยังคงส่งคืนเส้นทางที่แอปพลิเคชันถูกเรียกใช้ สำหรับพื้นหลังเล็กน้อยนี่เป็นเกมที่ใช้ Ogre ซึ่งฉันกำลังพยายามสร้างโปรไฟล์โดยใช้ Very Sleepy ซึ่งเรียกใช้เป้าหมายที่เรียกใช้งานได้จากไดเรกทอรีของตัวเองดังนั้นแน่นอนว่าเมื่อโหลดเกมจะไม่พบไฟล์การกำหนดค่า ฯลฯ และเกิดปัญหาทันที . ฉันต้องการที่จะส่งผ่านเส้นทางที่แน่นอนไปยังไฟล์กำหนดค่าซึ่งฉันรู้ว่าจะอยู่คู่กับไฟล์ปฏิบัติการเสมอ เช่นเดียวกับการดีบักใน Visual Studio - ฉันต้องการที่จะสามารถเรียกใช้ $ (TargetPath) โดยไม่ต้องตั้งค่าไดเร็กทอรีการทำงาน
115 c++  boost  executable 

1
หนึ่งจะเรียก std :: ส่งต่ออาร์กิวเมนต์ทั้งหมดในฟังก์ชันตัวแปรได้อย่างไร
ฉันแค่เขียนโรงงานออบเจ็กต์ทั่วไปและใช้เมตาไลบรารีของตัวประมวลผลก่อนเร่งความเร็วเพื่อสร้างเทมเพลตแบบต่างๆ (ใช้ 2010 และไม่รองรับ) ฟังก์ชันของฉันใช้การอ้างอิง rval และstd::forwardเพื่อทำการส่งต่อที่สมบูรณ์แบบและทำให้ฉันคิดว่า ... เมื่อ C ++ 0X ออกมาและฉันมีคอมไพเลอร์มาตรฐานฉันจะทำสิ่งนี้กับเทมเพลตตัวแปรจริง ฉันจะเรียกร้องstd::forwardให้มีการโต้แย้งได้อย่างไร? template <typename ...Params> void f(Params... params) // how do I say these are rvalue reference? { y(std::forward(...params)); //? - I doubt this would work. } วิธีเดียวที่ฉันคิดได้ว่าจะต้องมีการเปิดกล่อง ... params ด้วยตนเองและฉันก็ยังไม่ค่อยอยู่ที่นั่นเช่นกัน มีไวยากรณ์ที่เร็วกว่าที่จะใช้งานได้หรือไม่?

9
วิธีที่ต้องการ / สำนวนในการแทรกลงในแผนที่คืออะไร?
ฉันได้ระบุสี่วิธีในการแทรกองค์ประกอบลงใน a std::map: std::map<int, int> function; function[0] = 42; function.insert(std::map<int, int>::value_type(0, 42)); function.insert(std::pair<int, int>(0, 42)); function.insert(std::make_pair(0, 42)); วิธีใดที่เป็นที่ต้องการ / สำนวน? (และมีวิธีอื่นที่ฉันคิดไม่ถึง?)
115 c++  stl  insert  stdmap  std-pair 

30
คุณสมบัติที่ซ่อนอยู่ของ C ++? [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ไม่ชอบ C ++ เมื่อพูดถึงบรรทัดคำถาม "คุณลักษณะที่ซ่อนอยู่" หรือไม่? คิดว่าฉันจะโยนมันออกไปที่นั่น อะไรคือคุณสมบัติที่ซ่อนอยู่ของ C ++?

4
ตรวจพบไม่ตรงกันสำหรับ 'RuntimeLibrary'
ฉันดาวน์โหลดและแตก Crypto ++ ใน C: \ cryptopp ฉันใช้ Visual Studio Express 2012 เพื่อสร้างโครงการทั้งหมดภายใน (ตามคำแนะนำใน readme) และทุกอย่างถูกสร้างขึ้นสำเร็จ จากนั้นฉันก็สร้างโครงการทดสอบในโฟลเดอร์อื่นและเพิ่ม cryptolib เป็นการอ้างอิง หลังจากนั้นฉันเพิ่มเส้นทางการรวมเพื่อให้ฉันสามารถรวมส่วนหัวทั้งหมดได้อย่างง่ายดาย เมื่อฉันพยายามรวบรวมฉันพบข้อผิดพลาดเกี่ยวกับสัญลักษณ์ที่ไม่ได้รับการแก้ไข เพื่อแก้ไขปัญหานั้นฉันได้เพิ่มC:\cryptopp\Win32\Output\Debug\cryptlib.libเพื่อเชื่อมโยงการอ้างอิงเพิ่มเติม ตอนนี้ฉันได้รับข้อผิดพลาดนี้: Error 1 error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in program.obj C:\Data\Work\C++ VS\CryptoTest\CryptoTest\cryptlib.lib(cryptlib.obj) CryptoTest Error 2 error LNK2038: mismatch detected for 'RuntimeLibrary': …

6
การตั้งค่า int เป็น Infinity ใน C ++
ฉันมีค่าint aที่ต้องเท่ากับ "อินฟินิตี้" ซึ่งหมายความว่าถ้า int b = anyValue; a>b เป็นความจริงเสมอ มีคุณลักษณะของ C ++ ที่สามารถทำให้เป็นไปได้หรือไม่?
114 c++  infinity 

13
ใน C ++ ฉันควรกังวลกับตัวแปรแคชหรือให้คอมไพเลอร์ทำการปรับให้เหมาะสม? (นามแฝง)
พิจารณารหัสต่อไปนี้ ( pเป็นประเภทunsigned char*และbitmap->widthเป็นจำนวนเต็มบางประเภทซึ่งไม่ทราบแน่ชัดและขึ้นอยู่กับเวอร์ชันของไลบรารีภายนอกที่เราใช้): for (unsigned x = 0; x < static_cast<unsigned>(bitmap->width); ++x) { *p++ = 0xAA; *p++ = 0xBB; *p++ = 0xCC; } คุ้มไหมที่จะเพิ่มประสิทธิภาพ [.. ] มีบางกรณีไหมที่สามารถให้ผลลัพธ์ที่มีประสิทธิภาพมากขึ้นโดยการเขียน: unsigned width(static_cast<unsigned>(bitmap->width)); for (unsigned x = 0; x < width; ++x) { *p++ = 0xAA; *p++ = 0xBB; *p++ = 0xCC; } …

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