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

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

6
ฉันจะส่งผ่านอาร์กิวเมนต์ unique_ptr ไปยังตัวสร้างหรือฟังก์ชันได้อย่างไร
ฉันใหม่เพื่อย้ายซีแมนทิกส์ใน C ++ 11 และฉันไม่รู้วิธีจัดการunique_ptrพารามิเตอร์ใน Constructor หรือฟังก์ชั่น พิจารณาคลาสนี้อ้างอิง: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); } protected : Base::UPtr next; }; นี่เป็นวิธีที่ฉันควรจะเขียนฟังก์ชั่นการunique_ptrโต้แย้ง? และฉันต้องใช้std::moveในรหัสโทรหรือไม่ Base::UPtr b1; Base::UPtr b2(new Base()); b1->setNext(b2); //should I write b1->setNext(std::move(b2)); instead?

16
การเชื่อมโยงแบบคงที่เทียบกับการเชื่อมโยงแบบไดนามิก
มีเหตุผลด้านประสิทธิภาพที่น่าสนใจในการเลือกการเชื่อมโยงแบบคงที่มากกว่าการเชื่อมโยงแบบไดนามิกหรือในทางกลับกันในบางสถานการณ์? ฉันได้ยินหรืออ่านข้อความต่อไปนี้ แต่ฉันไม่รู้เรื่องเพียงพอที่จะรับรองความจริง 1) ความแตกต่างของประสิทธิภาพรันไทม์ระหว่างการลิงก์แบบสแตติกและการลิงก์แบบไดนามิกนั้นมักจะเล็กน้อย 2) (1) ไม่เป็นความจริงหากใช้คอมไพเลอร์การทำโปรไฟล์ที่ใช้ข้อมูลโปรไฟล์เพื่อออพติคอลฮอตพา ธ ของโปรแกรมเนื่องจากการเชื่อมโยงแบบสแตติกคอมไพเลอร์สามารถปรับทั้งโค้ดของคุณและรหัสไลบรารี ด้วยการเชื่อมโยงแบบไดนามิกรหัสของคุณเท่านั้นที่สามารถเพิ่มประสิทธิภาพ หากใช้เวลาส่วนใหญ่ในการเรียกใช้รหัสห้องสมุดอาจทำให้เกิดความแตกต่างอย่างมาก มิฉะนั้น (1) ยังคงใช้

4
เมื่อใดที่จะใช้ extern ใน C ++
ฉันกำลังอ่าน "คิดใน C ++" และมันเพิ่งเปิดตัวการexternประกาศ ตัวอย่างเช่น: extern int x; extern float y; ฉันคิดว่าฉันเข้าใจความหมาย (ประกาศโดยไม่มีคำจำกัดความ) แต่ฉันสงสัยว่ามันจะมีประโยชน์เมื่อใด บางคนสามารถให้ตัวอย่างได้หรือไม่?

30
การใช้ 'const' สำหรับพารามิเตอร์ฟังก์ชัน
คุณไปด้วยไกลแค่ไหนconst? คุณเพียงแค่สร้างฟังก์ชั่นconstเมื่อจำเป็นหรือคุณใช้ทั้งหมูและใช้มันทุกที่หรือไม่? ตัวอย่างเช่นลองนึกภาพ Mutator ง่ายๆที่รับพารามิเตอร์บูลีนเดี่ยว: void SetValue(const bool b) { my_val_ = b; } ที่เป็นconstประโยชน์ได้จริง? ส่วนตัวฉันเลือกที่จะใช้อย่างกว้างขวางรวมถึงพารามิเตอร์ แต่ในกรณีนี้ฉันสงสัยว่ามันคุ้มค่าหรือไม่ ฉันรู้สึกประหลาดใจที่ได้เรียนรู้ว่าคุณสามารถละเว้นconstจากพารามิเตอร์ในการประกาศฟังก์ชัน แต่สามารถรวมไว้ในการกำหนดฟังก์ชันเช่น: ไฟล์. h void func(int n, long l); ไฟล์. cpp void func(const int n, const long l) มีเหตุผลสำหรับสิ่งนี้หรือไม่? ดูเหมือนว่าผิดปกติเล็กน้อยสำหรับฉัน
397 c++  const 

12
ฉันจะค้นหาเอกสารมาตรฐาน C หรือ C ++ ปัจจุบันได้ที่ไหน
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ คุณเลือกใช้Stack Overflow ในภาษาอังกฤษ : Гдевзятьстандарт C ++? สำหรับคำถามมากมายคำตอบดูเหมือนจะพบได้ใน "มาตรฐาน" อย่างไรก็ตามเราจะพบสิ่งนั้นได้ที่ไหน ออนไลน์ยิ่งกว่า Googling บางครั้งอาจรู้สึกไร้ประโยชน์อีกครั้งโดยเฉพาะอย่างยิ่งสำหรับมาตรฐาน C เนื่องจากพวกเขาจมน้ำตายในการอภิปรายในฟอรัมโปรแกรม ในการเริ่มต้นสิ่งนี้เนื่องจากสิ่งเหล่านี้เป็นสิ่งที่ฉันกำลังค้นหาอยู่ตอนนี้มีแหล่งข้อมูลออนไลน์ที่ดีสำหรับ: C89 C99 C11 C ++ 98 C ++ 03 C ++ 11 C ++ 14 C ++ 17
394 c++  c  standards  c++-faq 


7
ตัวอย่างง่ายๆของการเธรดใน C ++
คำตอบของคำถามนี้เป็นความพยายามของชุมชน แก้ไขคำตอบที่มีอยู่เพื่อปรับปรุงโพสต์นี้ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ใครบางคนสามารถโพสต์ตัวอย่างง่ายๆของการเริ่มต้นสองหัวข้อ (Object Oriented) ใน C ++ ฉันกำลังมองหาวัตถุเธรด C ++ ที่แท้จริงที่ฉันสามารถขยายวิธีการรันบน (หรือสิ่งที่คล้ายกัน) ซึ่งตรงข้ามกับการเรียกไลบรารีเธรด C-style ฉันออกจากคำขอเฉพาะระบบปฏิบัติการใด ๆ ด้วยความหวังว่าใครก็ตามที่ตอบกลับจะตอบกลับด้วยห้องสมุดข้ามแพลตฟอร์มที่จะใช้ ตอนนี้ฉันกำลังอธิบายอย่างชัดเจน

6
วิธีที่เร็วที่สุดในการพิจารณาว่าจำนวนเต็มอยู่ระหว่างสองจำนวนเต็ม (รวม) กับชุดของค่าที่ทราบ
มีวิธีเร็วกว่าx >= start && x <= endใน C หรือ C ++ เพื่อทดสอบว่าจำนวนเต็มอยู่ระหว่างสองจำนวนเต็ม? อัปเดต : แพลตฟอร์มเฉพาะของฉันคือ iOS นี่เป็นส่วนหนึ่งของฟังก์ชันเบลอเบลอที่ จำกัด พิกเซลไว้ที่วงกลมในสี่เหลี่ยมจัตุรัสที่กำหนด UPDATE : หลังจากที่พยายามตอบรับผมได้มีคำสั่งเพิ่มความเร็วขนาดในหนึ่งบรรทัดของรหัสมากกว่าทำมันปกติx >= start && x <= endทาง UPDATE : นี่คือโค้ดหลังและก่อนหน้ากับแอสเซมเบลอร์จาก XCode: วิธีการใหม่ // diff = (end - start) + 1 #define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff) Ltmp1313: …
389 c++  c  performance  math 

10
พริตตี้คอนเทนเนอร์ C ++ STL แบบสวย
โปรดรับทราบการปรับปรุงในตอนท้ายของโพสต์นี้ อัปเดต: ฉันได้สร้างโครงการสาธารณะบน GitHubสำหรับห้องสมุดนี้แล้ว! ผมอยากจะมีแม่แบบเดียวที่และทุกครั้งจะดูแลสวยพิมพ์ภาชนะ STL operator<<ทั้งหมดผ่าน ในรหัสหลอกฉันกำลังมองหาสิ่งนี้: template<container C, class T, String delim = ", ", String open = "[", String close = "]"> std::ostream & operator<<(std::ostream & o, const C<T> & x) { o << open; // for (typename C::const_iterator i = x.begin(); i != x.end(); i++) /* …


9
std :: สัญญาคืออะไร?
ผมค่อนข้างคุ้นเคยกับ C ++ 11 std::thread, std::asyncและstd::futureส่วนประกอบ (เช่นดูคำตอบนี้ ) ซึ่งจะตรงไปข้างหน้า อย่างไรก็ตามฉันไม่สามารถเข้าใจได้ว่าstd::promiseมันคืออะไรมันทำอะไรและใช้ในสถานการณ์แบบไหนดีที่สุด เอกสารมาตรฐานนั้นไม่มีข้อมูลจำนวนมากเกินกว่าบทสรุปในชั้นเรียนและไม่มีเพียง :: เธรดเพียง ใครช่วยกรุณาstd::promiseเล่าตัวอย่างสั้น ๆ สังเขปของสถานการณ์ที่จำเป็นและเป็นวิธีแก้ปัญหาที่สำนวนที่สุด?

10
วิธีการตรวจสอบต้นคริสต์มาส [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดเมื่อปีที่แล้ว เทคนิคการประมวลผลภาพใดที่สามารถใช้ในการใช้แอพพลิเคชั่นที่ตรวจจับต้นคริสต์มาสที่แสดงในภาพต่อไปนี้ ฉันกำลังค้นหาวิธีแก้ปัญหาที่จะทำงานกับภาพเหล่านี้ ดังนั้นวิธีการที่ต้องใช้ตัวแยกประเภทการฝึกอบรมหรือการจับคู่แม่แบบไม่น่าสนใจมาก ฉันกำลังมองหาบางอย่างที่สามารถเขียนได้ในภาษาการเขียนโปรแกรมใด ๆตราบใดที่มันใช้เทคโนโลยีโอเพนซอร์สเท่านั้น การแก้ปัญหาจะต้องทดสอบกับภาพที่ใช้ร่วมกันในคำถามนี้ มีภาพอินพุต 6 รูปและคำตอบควรแสดงผลลัพธ์ของการประมวลผลแต่ละภาพ ในที่สุดสำหรับแต่ละภาพออกจะต้องมีเส้นสีแดงลากเพื่อล้อมต้นไม้ที่ตรวจพบ คุณจะไปเกี่ยวกับการตรวจจับต้นไม้ในรูปแบบโดยทางโปรแกรมอย่างไร

16
ควรใช้การอ้างอิงกับพอยน์เตอร์เมื่อใด
ฉันเข้าใจไวยากรณ์และความหมายทั่วไปของพอยน์เตอร์กับการอ้างอิง แต่ฉันจะตัดสินใจได้อย่างไรว่าควรจะใช้การอ้างอิงหรือพอยน์เตอร์ใน API เหมาะสมกว่าหรือน้อยกว่านั้น โดยปกติแล้วบางสถานการณ์ต้องการหนึ่งหรืออื่น ๆ ( operator++ต้องการอาร์กิวเมนต์อ้างอิง) แต่โดยทั่วไปฉันพบว่าฉันชอบที่จะใช้พอยน์เตอร์ (และพอยน์เตอร์พอยน์) เนื่องจากไวยากรณ์มีความชัดเจนว่าตัวแปรนั้นผ่านการทำลายล้าง เช่นในรหัสต่อไปนี้: void add_one(int& n) { n += 1; } void add_one(int* const n) { *n += 1; } int main() { int a = 0; add_one(a); // Not clear that a may be modified add_one(&a); // 'a' is clearly …
381 c++  pointers  reference 

17
คุณจะรับเอาต์พุตแอสเซมเบลอร์จากแหล่ง C / C ++ เป็น gcc ได้อย่างไร
คนเราจะทำสิ่งนี้ได้อย่างไร หากฉันต้องการวิเคราะห์ว่ามีบางสิ่งที่รวบรวมได้ฉันจะได้รับรหัสแอสเซมบลีที่ปล่อยออกมาได้อย่างไร
379 c++  c  debugging  gcc  assembly 

4
ตัวเลือกการคัดลอกและการเพิ่มประสิทธิภาพค่าตอบแทนคืออะไร?
การคัดลอกข้อมูลคืออะไร? การเพิ่มประสิทธิภาพค่าที่ส่งคืนคืออะไร พวกเขาหมายถึงอะไร พวกเขาสามารถเกิดขึ้นได้ในสถานการณ์ใด ข้อ จำกัด คืออะไร หากคุณได้รับการอ้างอิงกับคำถามนี้คุณอาจจะมองหาการแนะนำ สำหรับภาพรวมทางเทคนิคดูมาตรฐานอ้างอิง ดูกรณีทั่วไปที่นี่

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