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

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

13
การเริ่มต้นขององค์ประกอบทั้งหมดของอาร์เรย์ให้เป็นค่าเริ่มต้นหนึ่งใน C ++?
หมายเหตุ C ++: การเริ่มต้นอาร์เรย์มีรายการที่ดีเกี่ยวกับการเริ่มต้นของอาร์เรย์ ฉันมี int array[100] = {-1}; คาดหวังว่ามันจะเต็มไปด้วย -1 แต่ไม่ใช่เพียงค่าแรกคือและส่วนที่เหลือเป็น 0 ผสมกับค่าสุ่ม รหัส int array[100] = {0}; ทำงานได้ดีและตั้งค่าแต่ละองค์ประกอบเป็น 0 ฉันจะพลาดอะไรที่นี่ .. ไม่สามารถเริ่มต้นได้หากค่าไม่เป็นศูนย์? และ 2: การเริ่มต้นเริ่มต้น (ดังกล่าว) เร็วกว่าการวนซ้ำทั่วทั้งอาร์เรย์และกำหนดค่าหรือทำสิ่งเดียวกันหรือไม่?

8
จำเป็นต้องใช้ std :: unique_ptr <T> เพื่อทราบความหมายแบบเต็มของ T หรือไม่?
ฉันมีรหัสในส่วนหัวที่มีลักษณะเช่นนี้: #include &lt;memory&gt; class Thing; class MyClass { std::unique_ptr&lt; Thing &gt; my_thing; }; ถ้าฉันรวมส่วนหัวนี้ใน cpp ที่ไม่ได้มีการThingกำหนดประเภทแล้วนี่ไม่ได้รวบรวมภายใต้ VS2010-SP1: 1&gt; ไฟล์ C: \ Program (x86) \ Microsoft Visual Studio 10.0 \ VC \ include \ memory (2067): ข้อผิดพลาด C2027: การใช้ประเภท 'สิ่งที่ไม่ได้กำหนด' แทนที่std::unique_ptrด้วยstd::shared_ptrและมันจะรวบรวม ดังนั้นฉันเดาว่านี่เป็นการนำไปใช้ของ VS2010 ในปัจจุบันstd::unique_ptrซึ่งต้องการคำจำกัดความเต็มรูปแบบและขึ้นอยู่กับการนำไปใช้โดยสิ้นเชิง หรือมันคืออะไร? มีบางสิ่งในข้อกำหนดมาตรฐานที่ทำให้เป็นไปไม่ได้std::unique_ptrที่การนำไปใช้เพื่อทำงานกับการประกาศล่วงหน้าเท่านั้น มันรู้สึกแปลกที่ควรถือพอยน์เตอร์ไว้เท่านั้นThingไม่ใช่เหรอ?

28
ตัวแปรทั่วโลกแย่หรือเปล่า? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ใน C / C ++ ตัวแปรทั่วโลกไม่ดีเท่าที่อาจารย์คิด
247 c++  c  global-variables 

17
วิธีการดึงกุญแจทั้งหมด (หรือค่า) จาก std :: map และวางลงในเวคเตอร์?
นี่เป็นวิธีหนึ่งที่ฉันสามารถทำได้: struct RetrieveKey { template &lt;typename T&gt; typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } }; map&lt;int, int&gt; m; vector&lt;int&gt; keys; // Retrieve all keys transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey()); // Dump all keys copy(keys.begin(), keys.end(), ostream_iterator&lt;int&gt;(cout, "\n")); แน่นอนว่าเราสามารถดึงค่าทั้งหมดออกจากแผนที่ได้ด้วยการกำหนด functor RetrieveValuesอีกค่า มีวิธีอื่นในการบรรลุเป้าหมายนี้อย่างง่ายดายหรือไม่? (ฉันสงสัยอยู่เสมอว่าทำไม std :: map ไม่รวมฟังก์ชั่นสมาชิกเพื่อให้เราทำเช่นนั้น)
246 c++  dictionary  stl  stdmap 

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

12
to_string ไม่ได้เป็นสมาชิกของ std กล่าวว่า g ++ (mingw)
ฉันกำลังทำโปรแกรมจดจำคำศัพท์ขนาดเล็กซึ่งคำต่างๆจะถูกกระพริบที่ฉันแบบสุ่มสำหรับความหมาย ฉันต้องการใช้ไลบรารี C ++ มาตรฐานเนื่องจาก Bjarne Stroustroup บอกเรา แต่ฉันพบปัญหาแปลก ๆ ที่ดูเหมือนจะเกิดขึ้นนอกประตู ฉันต้องการเปลี่ยนlongจำนวนเต็มstd::stringเพื่อให้สามารถเก็บไว้ในไฟล์ได้ ฉันมีงานทำto_string()เหมือนกัน ปัญหาคือเมื่อฉันรวบรวมมันด้วย g ++ (รุ่น 4.7.0 ตามที่ระบุไว้ใน --‍version flag) มันพูดว่า: PS C:\Users\Anurag\SkyDrive\College\Programs&gt; g++ -std=c++0x ttd.cpp ttd.cpp: In function 'int main()': ttd.cpp:11:2: error: 'to_string' is not a member of 'std' โปรแกรมของฉันที่ให้ข้อผิดพลาดนี้คือ: #include &lt;string&gt; int main() { std::to_string(0); return 0; …
245 c++  c++11  g++  mingw  tostring 

5
ฉันสามารถตั้งเบรกพอยต์ใน 'การเข้าถึงหน่วยความจำ' ใน GDB ได้หรือไม่?
ฉันใช้งานแอพพลิเคชั่นผ่าน gdb และฉันต้องการตั้งค่าเบรกพอยต์เมื่อใดก็ตามที่มีการเข้าถึง / เปลี่ยนแปลงตัวแปรเฉพาะ มีวิธีที่ดีในการทำเช่นนี้หรือไม่? ฉันยังสนใจวิธีอื่น ๆ ในการตรวจสอบตัวแปรใน C / C ++ เพื่อดูว่า / เมื่อมันเปลี่ยนแปลง

12
มี Java หรือวิธีการเทียบเท่าสำหรับคำหลัก typedef ใน C ++ หรือไม่
มาจากพื้นหลัง C และ C ++ ฉันพบว่าการใช้ประโยชน์อย่างรอบคอบนั้นtypedefมีประโยชน์อย่างไม่น่าเชื่อ คุณรู้วิธีที่จะใช้ฟังก์ชันการทำงานที่คล้ายกันใน Java ไม่ว่าจะเป็นกลไก Java, รูปแบบ, หรือวิธีที่มีประสิทธิภาพอื่น ๆ ที่คุณใช้?
244 java  c++  c  design-patterns  typedef 

9
มีความแตกต่างระหว่างการเริ่มต้นการคัดลอกและการเริ่มต้นโดยตรงหรือไม่?
สมมติว่าฉันมีฟังก์ชั่นนี้: void my_test() { A a1 = A_factory_func(); A a2(A_factory_func()); double b1 = 0.5; double b2(0.5); A c1; A c2 = A(); A c3(A()); } ในการจัดกลุ่มแต่ละข้อความเหล่านี้เหมือนกันหรือไม่ หรือมีสำเนาพิเศษ (อาจปรับให้เหมาะสม) ในการกำหนดค่าเริ่มต้นบางส่วนได้หรือไม่ ฉันเคยเห็นคนพูดทั้งสองอย่าง โปรดอ้างอิงข้อความเป็นหลักฐาน โปรดเพิ่มกรณีอื่นด้วย

15
C ++ จับข้อยกเว้นทั้งหมด
มี c ++ เทียบเท่าของ Java หรือไม่ try { ... } catch (Throwable t) { ... } ฉันพยายามดีบักโค้ด Java / jni ที่เรียกใช้ฟังก์ชัน windows ดั้งเดิมและเครื่องเสมือนหยุดทำงาน รหัสเนทีฟดูเหมือนดีในการทดสอบหน่วยและดูเหมือนว่าจะพังเมื่อเรียกผ่าน jni กลไกการยกเว้นแบบทั่วไปจะพิสูจน์ว่ามีประโยชน์มาก
244 c++  exception 

4
เมื่อใดที่ฉันจะใช้จุดลูกศรหรือเครื่องหมายโคลอนคู่เพื่ออ้างถึงสมาชิกของคลาสใน C ++
มาจากภาษา C ที่ได้มาจากอื่น ๆ (เช่น Java หรือ C #) กับ C ++ มันเป็นครั้งแรกที่ทำให้เกิดความสับสนมากว่า C ++ มีสามวิธีในการอ้างถึงสมาชิกของชั้นเรียน: a::b, และa.b a-&gt;bฉันจะใช้โอเปอเรเตอร์ตัวใด (หมายเหตุ: นี่คือหมายถึงการเป็นรายการที่จะกองมากเกินของ C ++ คำถามที่พบบ่อย . ถ้าคุณต้องการที่จะวิจารณ์ความคิดของการให้คำถามที่พบบ่อยในรูปแบบนี้แล้วโพสต์บนเมตาที่เริ่มต้นทั้งหมดนี้ . จะเป็นสถานที่ที่จะทำเช่นนั้นได้คำตอบ คำถามนั้นจะได้รับการตรวจสอบในห้องสนทนา C ++ซึ่งแนวคิด FAQ เริ่มต้นตั้งแต่แรกดังนั้นคำตอบของคุณมีโอกาสมากที่จะได้รับการอ่านโดยผู้ที่คิดแนวคิดนั้น)
243 c++  c++-faq 

11
อะไรคือไลบรารี C ++ เวกเตอร์ / เมทริกซ์คณิตศาสตร์ / พีชคณิตเชิงเส้นที่ใช้กันอย่างแพร่หลายและการแลกเปลี่ยนต้นทุนและผลประโยชน์ [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ดูเหมือนว่าโครงการจำนวนมากจะต้องทำคณิตศาสตร์เมทริกซ์อย่างช้าๆและตกหลุมพรางของการสร้างเวกเตอร์ชั้นหนึ่งและค่อยๆเพิ่มฟังก์ชั่นการใช้งานจนกว่าพวกเขาจะได้สร้างห้องสมุดพีชคณิตเชิงเส้นที่กำหนดเองแบบครึ่งทางขึ้นอยู่กับมัน ฉันต้องการหลีกเลี่ยงที่ในขณะที่ไม่ได้สร้างในการพึ่งพาไลบรารีที่เกี่ยวข้องกันบางอย่าง (เช่น OpenCV, OpenSceneGraph) อะไรคือไลบรารีเมทริกซ์คณิตศาสตร์ / พีชคณิตเชิงเส้นที่ใช้กันโดยทั่วไปมีอะไรบ้างและเหตุใดจึงตัดสินใจใช้มากกว่าหนึ่ง มีผู้ใดบ้างที่จะไม่แนะนำให้ใช้ด้วยเหตุผลบางอย่าง? ฉันใช้สิ่งนี้โดยเฉพาะในบริบททางเรขาคณิต / เวลา * (2,3,4 Dim) * แต่อาจใช้ข้อมูลมิติที่สูงขึ้นในอนาคต ฉันกำลังมองหาความแตกต่างเกี่ยวกับ: API, ความเร็ว, การใช้หน่วยความจำ, ความกว้าง / ความสมบูรณ์, ความแคบ / ความจำเพาะ, ความสามารถในการขยายและ / หรือวุฒิภาวะ / ความมั่นคง ปรับปรุง ฉันลงเอยด้วยการใช้ Eigen3 ซึ่งฉันมีความสุขมาก

14
ตัวชี้ไปยังคลาสข้อมูลสมาชิก“ :: *”
ฉันเจอข้อมูลโค้ดแปลก ๆ ที่รวบรวมได้ดี: class Car { public: int speed; }; int main() { int Car::*pSpeed = &amp;Car::speed; return 0; } เหตุใด C ++ จึงมีตัวชี้นี้ไปยังสมาชิกข้อมูลที่ไม่คงที่ของคลาส? สิ่งที่การใช้งานของตัวชี้นี้แปลกในรหัสที่แท้จริงคืออะไร?
243 c++  class  pointers  c++-faq 

5
วิธีเพิ่มไดเรกทอรีรวมอย่างถูกต้องด้วย CMake
เกี่ยวกับปีที่ผ่านมาผมถามเกี่ยวกับการอ้างอิงในส่วนหัว CMake ฉันเพิ่งรู้ว่าปัญหานี้ดูเหมือนว่า CMake จะพิจารณาว่าไฟล์ส่วนหัวเหล่านั้นเป็นไฟล์ภายนอกโครงการ อย่างน้อยเมื่อสร้างโครงการ Code :: Blocks ไฟล์ส่วนหัวจะไม่ปรากฏในโครงการ (ไฟล์ต้นฉบับทำ) สำหรับฉันแล้ว CMake คิดว่าส่วนหัวเหล่านั้นเป็นโครงการภายนอกและไม่ได้ติดตามพวกเขาในสิ่งที่ขึ้นกับ การค้นหาอย่างรวดเร็วในบทแนะนำ CMake ชี้ไปinclude_directoriesที่ดูเหมือนจะไม่ทำสิ่งที่ฉันต้องการ ... เป็นวิธีที่เหมาะสมในการส่งสัญญาณถึง CMake ว่าไดเรกทอรีใดมีส่วนหัวที่จะรวมและส่วนหัวเหล่านั้นควรถูกติดตามโดย Makefile ที่สร้างขึ้น?
243 c++  ubuntu  cmake 

1
วัตถุประสงค์ของการ std :: launder คืออะไร?
P0137แนะนำเทมเพลตฟังก์ชั่น std::launderและทำการเปลี่ยนแปลงมากมายในมาตรฐานในส่วนที่เกี่ยวข้องกับสหภาพอายุการใช้งานและพอยน์เตอร์ ปัญหานี้แก้ไขได้อย่างไร การเปลี่ยนแปลงภาษาที่ฉันต้องระวังคืออะไร และสิ่งที่เราlaunderไอเอ็นจี?

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