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

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

26
วัดเวลาที่ผ่านไปได้อย่างง่ายดาย
ฉันกำลังพยายามใช้เวลา ()เพื่อวัดจุดต่าง ๆ ของโปรแกรมของฉัน สิ่งที่ฉันไม่เข้าใจคือเหตุผลที่ค่าในก่อนและหลังเหมือนกันหรือไม่ ฉันเข้าใจว่านี่ไม่ใช่วิธีที่ดีที่สุดในการจัดทำโปรไฟล์โปรแกรมของฉันฉันแค่ต้องการดูว่าใช้เวลานานเท่าใด printf("**MyProgram::before time= %ld\n", time(NULL)); doSomthing(); doSomthingLong(); printf("**MyProgram::after time= %ld\n", time(NULL)); ฉันเหนื่อย: struct timeval diff, startTV, endTV; gettimeofday(&startTV, NULL); doSomething(); doSomethingLong(); gettimeofday(&endTV, NULL); timersub(&endTV, &startTV, &diff); printf("**time taken = %ld %ld\n", diff.tv_sec, diff.tv_usec); ฉันจะอ่านผลลัพธ์ได้**time taken = 0 26339อย่างไร นั่นหมายความว่า nanoseconds 26,339 = 26.3 มิลลิวินาที สิ่งที่เกี่ยวกับ**time …
297 c++  c  linux  time  measurement 

14
วิธีที่ดีที่สุดในการแยก subvector จากเวกเตอร์
สมมติว่าผมมีstd::vector(โทรให้ของมันmyVec) Nขนาด อะไรคือวิธีที่ง่ายที่สุดในการสร้างเวกเตอร์ใหม่ซึ่งประกอบด้วยสำเนาขององค์ประกอบ X ถึง Y โดยที่ 0 <= X <= Y <= N-1 ยกตัวอย่างเช่นmyVec [100000]ผ่านในเวกเตอร์ของขนาดmyVec [100999]150000 หากไม่สามารถทำได้อย่างมีประสิทธิภาพด้วยเวกเตอร์มีประเภทข้อมูล STL อื่นที่ฉันควรใช้แทนหรือไม่
295 c++  stl  vector  range 

5
เริ่มเธรดด้วยฟังก์ชันสมาชิก
ฉันพยายามที่จะสร้างที่มีฟังก์ชั่นสมาชิกที่เกิดการขัดแย้งใดและผลตอบแทนstd::thread voidฉันไม่สามารถหาไวยากรณ์ที่ใช้งานได้ - คอมไพเลอร์บ่นไม่ว่าจะเกิดอะไรขึ้น เป็นวิธีที่ถูกต้องในการใช้งานspawn()เพื่อให้ผลตอบแทนstd::threadที่ดำเนินการtest()คืออะไร? #include <thread> class blub { void test() { } public: std::thread spawn() { return { test }; } };


9
ฉันจะวนซ้ำแผนที่ C ++ ของแผนที่ได้อย่างไร
ฉันจะวนซ้ำstd::mapใน C ++ ได้อย่างไร แผนที่ของฉันถูกกำหนดเป็น: std::map< std::string, std::map<std::string, std::string> > ตัวอย่างเช่นคอนเทนเนอร์ด้านบนเก็บข้อมูลดังนี้: m["name1"]["value1"] = "data1"; m["name1"]["value2"] = "data2"; m["name2"]["value1"] = "data1"; m["name2"]["value2"] = "data2"; m["name3"]["value1"] = "data1"; m["name3"]["value2"] = "data2"; ฉันจะวนลูปผ่านแผนที่นี้และเข้าถึงค่าต่างๆได้อย่างไร?

15
== และ! = ขึ้นอยู่กับซึ่งกันและกันหรือไม่
ฉันเรียนรู้เกี่ยวกับการดำเนินงานมากใน C ++ และผมเห็นว่า==และ!=เป็นเพียงบางฟังก์ชั่นพิเศษที่สามารถปรับแต่งสำหรับประเภทที่ผู้ใช้กำหนด แม้ว่าข้อกังวลของฉันคือทำไมต้องมีคำจำกัดความแยกจากกันสองประการ ผมคิดว่าถ้าa == bเป็นจริงแล้วa != bเป็นเท็จโดยอัตโนมัติและในทางกลับกันและไม่มีความเป็นไปได้อื่น ๆ เพราะโดยความหมายคือa != b !(a == b)และฉันไม่สามารถจินตนาการถึงสถานการณ์ที่สิ่งนี้ไม่เป็นความจริง แต่บางทีจินตนาการของฉันมี จำกัด หรือฉันไม่รู้อะไรเลย? ฉันรู้ว่าฉันสามารถกำหนดหนึ่งในแง่ของอื่น ๆ แต่นี่ไม่ใช่สิ่งที่ฉันถามเกี่ยวกับ ฉันยังไม่ได้ถามถึงความแตกต่างระหว่างการเปรียบเทียบวัตถุด้วยมูลค่าหรือเอกลักษณ์ หรือว่าวัตถุสองรายการอาจเท่ากันและไม่เท่ากันในเวลาเดียวกัน (นี่ไม่ใช่ตัวเลือกแน่นอน! สิ่งเหล่านี้เป็นสิ่งที่ไม่เกิดร่วมกัน) สิ่งที่ฉันถามคือ: มีสถานการณ์ใดบ้างที่เป็นไปได้ที่การถามคำถามเกี่ยวกับวัตถุสองชิ้นที่เท่ากันนั้นสมเหตุสมผล แต่การถามเกี่ยวกับวัตถุที่ไม่เท่ากันนั้นไม่สมเหตุสมผล (จากมุมมองของผู้ใช้หรือมุมมองของผู้ใช้) หากไม่มีความเป็นไปได้เช่นนั้นเหตุใด C ++ ในโลกจึงให้ผู้ให้บริการสองรายนี้ถูกกำหนดให้เป็นฟังก์ชั่นที่แตกต่างกันสองรายการ

11
ตัวดำเนินการ XOR แบบโลจิคัลใน C ++?
มีอะไรแบบนี้เหรอ? มันเป็นครั้งแรกที่ผมพบความจำเป็นในการปฏิบัติสำหรับมัน แต่ฉันไม่เห็นหนึ่งที่ระบุไว้ใน Stroustrup ฉันตั้งใจจะเขียน: // Detect when exactly one of A,B is equal to five. return (A==5) ^^ (B==5); แต่ไม่มี^^ผู้ประกอบการ ฉันสามารถใช้ bitwise ^ที่นี่และได้รับคำตอบที่ถูกต้อง (ไม่ว่าจะเป็นเครื่องจริงหรือเท็จ) ฉันไม่เคยผสม&และ&&หรือ|และ||ดังนั้นฉันลังเลที่จะทำอย่างนั้นด้วยและ^^^ ฉันจะสะดวกสบายมากขึ้นการเขียนของตัวเองbool XOR(bool,bool)ฟังก์ชั่นแทน

24
ซิงเกิล: ควรใช้อย่างไร
แก้ไข: จากคำถามอื่นฉันให้คำตอบที่มีลิงก์ไปยังคำถาม / คำตอบมากมายเกี่ยวกับซิงเกิล: ข้อมูลเพิ่มเติมเกี่ยวกับซิงเกิลที่นี่: ดังนั้นฉันได้อ่านหัวข้อSingletons: การออกแบบที่ดีหรือไม้ยันรักแร้? และการโต้เถียงยังคงโกรธ ฉันเห็นว่า Singletons เป็นรูปแบบการออกแบบ (ดีและไม่ดี) ปัญหาของ Singleton ไม่ใช่รูปแบบ แต่เป็นเรื่องของผู้ใช้ (ขออภัยทุกคน) ทุกคนและพ่อของพวกเขาคิดว่าพวกเขาสามารถใช้งานได้อย่างถูกต้อง (และจากการสัมภาษณ์มากมายที่ฉันทำคนส่วนใหญ่ไม่สามารถทำได้) นอกจากนี้เนื่องจากทุกคนคิดว่าพวกเขาสามารถใช้ซิงเกิลตันที่ถูกต้องพวกเขาใช้รูปแบบและใช้ในสถานการณ์ที่ไม่เหมาะสม (แทนที่ตัวแปรทั่วโลกด้วย Singletons!) ดังนั้นคำถามหลักที่ต้องตอบคือ: เมื่อใดที่คุณควรใช้ซิงเกิลตัน คุณใช้งานซิงเกิลตันได้อย่างไร ความหวังของฉันสำหรับบทความนี้คือเราสามารถรวบรวมเข้าด้วยกันในที่เดียว (แทนที่จะต้อง google และค้นหาหลาย ๆ ไซต์) แหล่งที่เชื่อถือได้เมื่อ (และวิธี) ในการใช้ Singleton อย่างถูกต้อง ที่เหมาะสมก็จะเป็นรายการต่อต้านการใช้งานและการใช้งานที่ไม่ดีทั่วไปอธิบายว่าทำไมพวกเขาล้มเหลวในการทำงานและสำหรับการใช้งานที่ดีจุดอ่อนของพวกเขา เพื่อให้ลูกบอลกลิ้ง: ฉันจะจับมือและพูดว่านี่คือสิ่งที่ฉันใช้ แต่อาจมีปัญหา ฉันชอบ "Scott Myers" ในการจัดการเรื่องในหนังสือของเขา "Effective C ++" สถานการณ์ที่ดีสำหรับการใช้ซิงเกิลตัน (ไม่มาก): กรอบการบันทึก …

7
ฟังก์ชั่น Namespace + กับวิธีการคงที่ในชั้นเรียน
สมมติว่าฉันมีหรือกำลังจะเขียนชุดของฟังก์ชั่นที่เกี่ยวข้อง สมมติว่าพวกเขาเกี่ยวข้องกับคณิตศาสตร์ ฉันควร: เขียนฟังก์ชั่นเหล่านี้และใส่ไว้ในMyMathเนมสเปซของฉันและอ้างอิงผ่านMyMath::XYZ() สร้างชั้นเรียนที่เรียกว่าMyMathและทำให้วิธีการเหล่านี้คงที่และอ้างถึงในทำนองเดียวกันMyMath::XYZ() เหตุใดฉันจึงเลือกหนึ่งรายการเพื่อจัดระเบียบซอฟต์แวร์ของฉัน

19
กำลังตรวจจับ #includes ที่ฟุ่มเฟือยใน C / C ++?
ฉันมักจะพบว่าส่วนหัวของไฟล์มีขนาดใหญ่ขึ้นเรื่อย ๆ ตลอดเวลา แต่ก็ไม่เคยเล็กลง ตลอดอายุการใช้งานของคลาสไฟล์ต้นฉบับอาจมีการย้ายและถูกปรับโครงสร้างใหม่และเป็นไปได้มากที่มีจำนวนไม่มาก#includesที่ไม่จำเป็นต้องอยู่ที่นั่นอีกต่อไป ปล่อยให้พวกเขามีเพียงเวลาในการรวบรวมและเพิ่มการพึ่งพาการรวบรวมที่ไม่จำเป็น การพยายามคิดให้ได้ว่าอะไรที่ยังต้องการอยู่นั้นค่อนข้างน่าเบื่อ มีเครื่องมือบางชนิดที่สามารถตรวจจับคำสั่ง #include ที่ฟุ่มเฟือยและแนะนำเครื่องมือที่ฉันสามารถลบได้อย่างปลอดภัยหรือไม่? ผ้าสำลีทำสิ่งนี้ได้ไหม?

19
การคูณและการหารโดยใช้โอเปอเรเตอร์กะใน C เร็วขึ้นจริงหรือ
การคูณและการหารสามารถทำได้โดยใช้ตัวดำเนินการบิตตัวอย่างเช่น i*2 = i<<1 i*3 = (i<<1) + i; i*10 = (i<<3) + (i<<1) และอื่น ๆ จริง ๆ แล้วมันเร็วกว่าการใช้พูด(i<<3)+(i<<1)เพื่อคูณกับ 10 กว่าการใช้i*10โดยตรงหรือไม่ มีอินพุตอะไรบ้างที่ไม่สามารถคูณหรือหารด้วยวิธีนี้ได้?

10
C / C ++ รวมถึงลำดับไฟล์ส่วนหัว
คำสั่งใดควรรวมไฟล์ไว้เช่นอะไรคือสาเหตุของการรวมส่วนหัวหนึ่งหน้าไว้ด้วยกัน ตัวอย่างเช่นไฟล์ระบบ, STL และ Boost ไปก่อนหรือหลังไฟล์รวมในระบบหรือไม่
288 c++  c 

2
ความแตกต่างระหว่างการใช้ Makefile และ CMake เพื่อคอมไพล์โค้ด
ฉันใช้รหัสใน C / C ++ และใช้ Makefile (GNU) เพื่อรวบรวมรหัส ฉันสามารถทำเช่นเดียวกันกับ CMake และรับ MakeFile อย่างไรก็ตามความแตกต่างระหว่างการใช้ Makefile และ CMake เพื่อรวบรวมรหัสคืออะไร?
288 c++  c  makefile  cmake 

20
เขียนแอปพลิเคชันใน C หรือ C ++ สำหรับ Android หรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันกำลังพยายามพัฒนา / ย้ายเกมไปยัง Android แต่อยู่ใน C และ Android รองรับ Java แต่ฉันแน่ใจว่าต้องมีวิธีในการรับแอป C ที่นั่นทุกคนรู้วิธีที่จะทำสิ่งนี้ให้สำเร็จหรือไม่
286 c++  c  android 

2
C ++ unordered_map โดยใช้ประเภทคลาสที่กำหนดเองเป็นคีย์
ฉันพยายามที่จะใช้คลาสที่กำหนดเองเป็นกุญแจสำคัญสำหรับการunordered_mapเช่นต่อไปนี้: #include <iostream> #include <algorithm> #include <unordered_map> using namespace std; class node; class Solution; class Node { public: int a; int b; int c; Node(){} Node(vector<int> v) { sort(v.begin(), v.end()); a = v[0]; b = v[1]; c = v[2]; } bool operator==(Node i) { if ( i.a==this->a && i.b==this->b &&i.c==this->c …

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