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

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

7
การอ้างอิงที่ไม่ได้กำหนดสำหรับสมาชิกคลาสแบบสแตติก
ใครสามารถอธิบายได้ว่าทำไมรหัสต่อไปนี้จะไม่รวบรวม อย่างน้อยใน g ++ 4.2.4 และน่าสนใจมากขึ้นทำไมมันจะรวบรวมเมื่อฉันเลือกสมาชิกเพื่อ int? #include <vector> class Foo { public: static const int MEMBER = 1; }; int main(){ vector<int> v; v.push_back( Foo::MEMBER ); // undefined reference to `Foo::MEMBER' v.push_back( (int) Foo::MEMBER ); // OK return 0; }
201 c++  g++ 

11
พฤติกรรมที่ไม่ได้กำหนดทั่วไปทั้งหมดที่โปรแกรมเมอร์ C ++ ควรรู้คืออะไร [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ พฤติกรรมที่ไม่ได้กำหนดทั่วไปทั้งหมดที่โปรแกรมเมอร์ C ++ ควรรู้คืออะไร พูดเช่น: a[i] = i++;

5
ฉันต้องปิด ifstream ด้วยตนเองหรือไม่
ฉันต้องโทรด้วยตนเองclose()เมื่อใช้std::ifstreamหรือไม่ ตัวอย่างเช่นในรหัส: std::string readContentsOfFile(std::string fileName) { std::ifstream file(fileName.c_str()); if (file.good()) { std::stringstream buffer; buffer << file.rdbuf(); file.close(); return buffer.str(); } throw std::runtime_exception("file not found"); } ฉันต้องโทรfile.close()ด้วยตนเองหรือไม่ ไม่ควรifstreamใช้RAIIสำหรับการปิดไฟล์?
201 c++  ifstream  raii 

13
เมื่อใดที่จะใช้ std :: size_t?
ฉันแค่สงสัยว่าฉันควรใช้std::size_tกับลูปและสิ่งของแทนได้intอย่างไร ตัวอย่างเช่น #include <cstdint> int main() { for (std::size_t i = 0; i < 10; ++i) { // std::size_t OK here? Or should I use, say, unsigned int instead? } } โดยทั่วไปแล้ววิธีปฏิบัติที่ดีที่สุดเกี่ยวกับเวลาที่ใช้std::size_tคืออะไร

5
C ++ STL Vectors: รับตัววนซ้ำจากดัชนีหรือไม่
ดังนั้นฉันจึงเขียนโค้ดที่เข้าถึงองค์ประกอบใน stl เวกเตอร์โดย index [] แต่ตอนนี้ฉันต้องคัดลอกอันของเวกเตอร์ ดูเหมือนว่าvector.insert(pos, first, last)เป็นฟังก์ชั่นที่ฉันต้องการ ... ยกเว้นฉันจะมีครั้งแรกและครั้งสุดท้ายเป็น ints มีวิธีที่ดีที่ฉันสามารถใช้ตัววนซ้ำตามค่าเหล่านี้หรือไม่?
200 c++  stl  vector  iterator 

12
โยนคนที่อ้วนที่สุดออกจากเครื่องบินมากเกินไป
สมมติว่าคุณมีเครื่องบินและมีเชื้อเพลิงน้อย เว้นแต่ว่าเครื่องบินจะลดน้ำหนักผู้โดยสารลง 3,000 ปอนด์มันจะไม่สามารถไปถึงสนามบินถัดไปได้ เพื่อช่วยชีวิตคนจำนวนมากที่สุดเราอยากจะโยนคนที่หนักที่สุดออกจากเครื่องบินก่อน และใช่มีผู้คนนับล้านบนเครื่องบินและเราต้องการอัลกอริธึมที่เหมาะสมที่สุดในการค้นหาผู้โดยสารที่หนักที่สุดโดยไม่จำเป็นต้องเรียงลำดับรายการทั้งหมด นี่เป็นปัญหาพร็อกซีสำหรับสิ่งที่ฉันพยายามรหัสใน C ++ ฉันต้องการจะทำ "partial_sort" ในรายการผู้โดยสารโดยน้ำหนัก แต่ฉันไม่ทราบว่าฉันต้องการองค์ประกอบกี่ชิ้น ฉันสามารถใช้อัลกอริทึม "partial_sort" ของตัวเอง ("partial_sort_accumulate_until") ได้ แต่ฉันสงสัยว่ามีวิธีที่ง่ายกว่าในการทำสิ่งนี้โดยใช้ STL มาตรฐาน
200 c++  algorithm  sorting  stl 

6
เกิดอะไรขึ้นกับ cplusplus.com
นี่อาจไม่ใช่ฟอรัมที่เหมาะสมอย่างสมบูรณ์แบบสำหรับคำถามนี้ แต่ให้ฉันลองดูด้วยความเสี่ยงที่จะถูกย้ายออกไป มีหลายที่อ้างอิงสำหรับไลบรารีมาตรฐาน C ++ รวมทั้งมาตรฐาน ISO ที่ทรงคุณค่ามีMSDN , IBM , cppreferenceและcplusplus โดยส่วนตัวเมื่อเขียน C ++ ฉันต้องการการอ้างอิงที่มีการเข้าถึงแบบสุ่มอย่างรวดเร็วเวลาโหลดสั้นและตัวอย่างการใช้งานและฉันได้พบว่า cplusplus.com มีประโยชน์มาก อย่างไรก็ตามฉันได้รับฟังความคิดเห็นเชิงลบเกี่ยวกับเว็บไซต์นั้นบ่อยครั้งที่นี่ดังนั้นฉันจึงต้องการเจาะจง: ข้อผิดพลาดความเข้าใจผิดหรือคำแนะนำที่ไม่ดีที่ได้รับจาก cplusplus.com คืออะไร อะไรคือความเสี่ยงของการใช้มันเพื่อตัดสินใจการเข้ารหัส? ให้ฉันเพิ่มจุดนี้: ฉันต้องการที่จะสามารถตอบคำถามที่นี่ใน SO ด้วยคำพูดที่ถูกต้องของมาตรฐานและดังนั้นฉันต้องการโพสต์ลิงค์ที่ใช้งานได้ทันทีและ cplusplus.com จะเป็นเว็บไซต์ที่ฉันเลือกไม่ได้ ปัญหานี้
200 c++ 

8
สมาชิกของโครงสร้าง C ++ เริ่มต้นเป็น 0 โดยค่าเริ่มต้นหรือไม่
ฉันมีสิ่งนี้struct: struct Snapshot { double x; int y; }; ฉันต้องการxและyเป็น 0 พวกเขาจะเป็น 0 โดยค่าเริ่มต้นหรือฉันต้องทำ: Snapshot s = {0,0}; มีวิธีอื่นใดอีกในการทำให้โครงสร้างเป็นศูนย์?
200 c++ 

3
cout ไม่ใช่สมาชิกของ std
ฉันกำลังฝึกใช้ไฟล์ mulitple และไฟล์ส่วนหัวเป็นต้นดังนั้นฉันจึงมีโครงการนี้ซึ่งใช้ตัวเลขสองตัวแล้วเพิ่มเข้าไป ค่อนข้างง่าย นี่คือไฟล์ของฉัน: main.cpp #include <iostream> #include "add.h" int main() { int x = readNumber(); int y = readNumber(); writeAnswer(x + y); return(0); } io.cpp int readNumber() { int x; std::cout << "Number: "; std::cin >> x; return x; } void writeAnswer(int x) { std::cout << "Answer: "; …
200 c++  io  std  member  cout 


21
ยืนยันความชั่วร้ายหรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา Goผู้สร้างภาษาเขียน : ไปไม่ได้ให้การยืนยัน พวกเขาสะดวกสบายอย่างปฏิเสธไม่ได้ แต่ประสบการณ์ของเราคือผู้เขียนโปรแกรมใช้พวกเขาเป็นผู้ค้ำยันเพื่อหลีกเลี่ยงการคิดเกี่ยวกับการจัดการข้อผิดพลาดและการรายงานที่เหมาะสม การจัดการข้อผิดพลาดที่เหมาะสมหมายความว่าเซิร์ฟเวอร์ดำเนินการต่อหลังจากข้อผิดพลาดที่ไม่ร้ายแรงแทนที่จะล้มเหลว การรายงานข้อผิดพลาดที่เหมาะสมหมายความว่าข้อผิดพลาดนั้นเกิดขึ้นโดยตรงและตรงประเด็นช่วยให้โปรแกรมเมอร์ไม่สามารถตีความการติดตามข้อผิดพลาดจำนวนมากได้ ข้อผิดพลาดที่แม่นยำมีความสำคัญอย่างยิ่งเมื่อโปรแกรมเมอร์ที่เห็นข้อผิดพลาดไม่คุ้นเคยกับรหัส ความคิดเห็นของคุณเกี่ยวกับเรื่องนี้คืออะไร?
199 c++  c  error-handling  go  assert 

3
เหตุใดฉันจึงต้องเข้าถึงสมาชิกคลาสฐานแม่แบบผ่านตัวชี้นี้
หากคลาสด้านล่างไม่ใช่เทมเพลตฉันสามารถมีได้เฉพาะxในderivedคลาส แต่ด้วยรหัสข้างล่างนี้ผมต้องthis->xใช้ ทำไม? template <typename T> class base { protected: int x; }; template <typename T> class derived : public base<T> { public: int f() { return this->x; } }; int main() { derived<int> d; d.f(); return 0; }


6
วิธีที่เร็วที่สุดในการรีเซ็ตค่าทุกค่าของ std :: vector <int> เป็น 0
วิธีที่เร็วที่สุดในการรีเซ็ตค่าทุกค่าเป็นstd::vector&lt;int&gt;0 และรักษาขนาดเริ่มต้นของเวกเตอร์คืออะไร สำหรับลูปที่มีโอเปอเรเตอร์ [] หรือไม่
199 c++  reset  stdvector 

7
อะไรคือฟังก์ชั่น reentrant
ส่วนใหญ่ ของ ครั้งความหมายของ reentrance ที่ยกมาจากวิกิพีเดีย : โปรแกรมคอมพิวเตอร์หรือรูทีนถูกอธิบายว่าเป็น reentrant หากสามารถ เรียกได้อย่างปลอดภัยอีกครั้งก่อนที่การร้องขอก่อนหน้านี้จะเสร็จสมบูรณ์ (เช่นสามารถดำเนินการได้อย่างปลอดภัยพร้อมกัน) ในการเป็น reentrant โปรแกรมคอมพิวเตอร์หรือชุดคำสั่ง: ต้องไม่เก็บข้อมูลที่ไม่คงที่ (หรือทั่วโลก) ต้องไม่ส่งคืนที่อยู่เป็นข้อมูลคงที่ (หรือทั่วโลก) ที่ไม่ใช่ค่าคงที่ จะต้องทำงานเฉพาะกับข้อมูลที่ผู้โทรแจ้งมาเท่านั้น ต้องไม่พึ่งพาการล็อกกับรีซอร์สเดี่ยว ต้องไม่แก้ไขโค้ดของตัวเอง (ยกเว้นว่าจะดำเนินการในพื้นที่จัดเก็บเธรดเฉพาะของตนเอง) ต้องไม่เรียกโปรแกรมคอมพิวเตอร์หรือรูทีนที่ไม่ใช่ reentrant เป็นวิธีการที่ปลอดภัยที่กำหนดไว้? หากโปรแกรมสามารถดำเนินการได้อย่างปลอดภัยพร้อมกันก็หมายความว่ามันเป็น reentrant? อะไรคือเธรดทั่วไประหว่างจุดทั้งหกที่กล่าวถึงว่าฉันควรจำไว้ในขณะที่ตรวจสอบรหัสของฉันสำหรับความสามารถ reentrant นอกจากนี้ ฟังก์ชั่นการเรียกซ้ำทั้งหมดเป็น reentrant หรือไม่ ฟังก์ชั่น thread-safe ทั้งหมดถูก reentrant หรือไม่ ฟังก์ชันการเรียกซ้ำทั้งหมดและแบบปลอดภัยต่อการส่งข้อความ reentrant ทั้งหมดหรือไม่ ในขณะที่เขียนคำถามนี้สิ่งหนึ่งที่อยู่ในใจ: เงื่อนไขเช่นreentranceและความปลอดภัยแน่นอนที่ทุกคนคือพวกเขามีคำจำกัดความที่เป็นรูปธรรมหรือไม่? สำหรับถ้าไม่ใช่คำถามนี้ไม่มีความหมายมากนัก

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