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

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

2
เพิ่มจำนวนเวทย์มนตร์ :: hash_combine
boost::hash_combineฟังก์ชั่นแม่แบบใช้การอ้างอิงถึงกัญชา (เรียกว่าseed) vและวัตถุ ตามเอกสารมันรวมseedกับแฮชของvโดย seed ^= hash_value(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2); ฉันเห็นว่านี่เป็นปัจจัยกำหนด ฉันเห็นสาเหตุที่ใช้ XOR ฉันพนันได้เลยว่าการเพิ่มจะช่วยในการทำแผนที่ค่าที่คล้ายกันออกจากกันอย่างกว้างขวางดังนั้นตารางแฮชการตรวจสอบจะไม่พังทลาย แต่มีใครอธิบายได้ไหมว่าค่าคงที่ของเวทมนตร์คืออะไร

9
main () method ทำงานอย่างไรใน C?
ฉันรู้ว่ามีสองลายเซ็นที่แตกต่างกันในการเขียนวิธีการหลัก - int main() { //Code } หรือสำหรับการจัดการอาร์กิวเมนต์บรรทัดคำสั่งเราเขียนเป็น - int main(int argc, char * argv[]) { //code } ในC++ฉันรู้ว่าเราสามารถโอเวอร์โหลดเมธอดได้ แต่Cคอมไพเลอร์จัดการกับลายเซ็นของmainฟังก์ชันทั้งสองนี้อย่างไร
96 c++  c 

9
ทำความสะอาดโค้ดเพื่อ printf size_t ใน C ++ (หรือ: ใกล้เคียงที่สุดกับ C99 ของ% z ใน C ++)
ฉันมีรหัส C ++ ที่พิมพ์size_t: size_t a; printf("%lu", a); ฉันต้องการให้สิ่งนี้รวบรวมโดยไม่มีคำเตือนทั้งในสถาปัตยกรรม 32- และ 64 บิต ถ้าเป็น C99 ฉันสามารถprintf("%z", a);ใช้ได้ แต่ AFAICT %zไม่มีอยู่ในภาษา C ++ มาตรฐานใด ๆ ดังนั้นฉันต้องทำแทน printf("%lu", (unsigned long) a); ซึ่งน่าเกลียดจริงๆ หากไม่มีสิ่งอำนวยความสะดวกสำหรับการพิมพ์size_tในภาษาฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะเขียน printf wrapper หรือบางอย่างเช่นนั้นจะแทรก casts ที่เหมาะสมลงในsize_ts เพื่อกำจัดคำเตือนของคอมไพเลอร์ปลอมในขณะที่ยังคงรักษาสิ่งที่ดีไว้ ความคิดใด ๆ ? แก้ไขเพื่อชี้แจงว่าเหตุใดฉันจึงใช้ printf: ฉันมีฐานรหัสที่ค่อนข้างใหญ่ซึ่งฉันกำลังทำความสะอาด มันใช้ printf wrapper เพื่อทำสิ่งต่างๆเช่น "เขียนคำเตือนบันทึกลงในไฟล์และอาจออกจากโค้ดด้วยข้อผิดพลาด" ฉันอาจรวบรวม C …
96 c++  printf  size-t 

20
ฉันจะตรวจจับไฟล์ #include ที่ไม่จำเป็นในโปรเจ็กต์ C ++ ขนาดใหญ่ได้อย่างไร
ฉันกำลังทำงานกับโปรเจ็กต์ C ++ ขนาดใหญ่ใน Visual Studio 2008 และมีไฟล์จำนวนมากที่มี#includeคำสั่งที่ไม่จำเป็น บางครั้ง#includes เป็นเพียงอาร์ติแฟกต์และทุกอย่างจะคอมไพล์ได้ดีเมื่อลบออกและในกรณีอื่น ๆ คลาสอาจถูกประกาศไปข้างหน้าและ #include สามารถย้ายไปยัง.cppไฟล์ได้ มีเครื่องมือที่ดีในการตรวจจับทั้งสองกรณีนี้หรือไม่?

3
อะไรคือความแตกต่างระหว่างแนวคิดและข้อ จำกัด ของเทมเพลต
ฉันต้องการทราบว่าอะไรคือความแตกต่างทางความหมายระหว่างข้อเสนอแนวคิดเต็มรูปแบบ C ++ และข้อ จำกัด ของเทมเพลต (ตัวอย่างเช่นข้อ จำกัด ที่ปรากฏใน Dlang หรือ ข้อเสนอแนวคิดใหม่สำหรับ C ++ 1y ) แนวคิดที่สมบูรณ์สามารถทำอะไรได้มากกว่าข้อ จำกัด ของเทมเพลตที่ไม่สามารถทำได้
96 c++  c++11  d  c++-concepts 

2
“ พิษต่อฟังก์ชัน” ใน C ++ หมายความว่าอย่างไร?
ในตอนท้ายของการพูดคุย"แนะนำconstexpr"ของ Scott Schurr ที่ CppConเขาถามว่า "มีวิธีทำให้ฟังก์ชันเป็นพิษหรือไม่"? จากนั้นเขาอธิบายว่าสิ่งนี้สามารถทำได้ (แม้ว่าจะเป็นวิธีที่ไม่ได้มาตรฐาน) โดย: วางthrowในconstexprฟังก์ชั่น การประกาศยังไม่ได้รับการแก้ไข extern const char* การอ้างถึงสิ่งที่ยังไม่ได้แก้ไขexternในไฟล์throw ฉันรู้สึกว่าฉันไม่ได้อยู่ในส่วนลึกของฉันที่นี่ แต่ฉันอยากรู้: "พิษต่อหน้าที่" หมายความว่าอย่างไร? ความสำคัญ / ประโยชน์ของเทคนิคที่เขาสรุปคืออะไร?
96 c++  constexpr 

3
ทำไมไม่มี std :: stou?
C ++ 11 เพิ่มฟังก์ชันการแปลงสตริงใหม่: http://en.cppreference.com/w/cpp/string/basic_string/stoul ซึ่งรวมถึง stoi (string to int), stol (string to long), stoll (string to long long), stoul (string to unsigned long), stoull (string to unsigned long long) สิ่งที่โดดเด่นในกรณีที่ไม่มีคือฟังก์ชัน stou (string to unsigned) มีเหตุผลบางอย่างที่ไม่จำเป็น แต่เหตุผลอื่น ๆ ทั้งหมดคืออะไร? เกี่ยวข้อง: ไม่มีฟังก์ชัน "sto {short, unsigned short}" ใน C ++ 11?
96 c++  string  c++11  std 

14
จะลบอักขระบางตัวออกจากสตริงใน C ++ ได้อย่างไร
ตัวอย่างเช่นฉันให้ผู้ใช้ป้อนหมายเลขโทรศัพท์ cout << "Enter phone number: "; INPUT: (555) 555-5555 cin >> phone; ฉันต้องการลบอักขระ "(", ")" และ "-" ออกจากสตริง ฉันได้ดูที่สตริงลบค้นหาและแทนที่ฟังก์ชันแล้ว แต่ฉันเห็นว่ามันทำงานตามตำแหน่งเท่านั้น มีฟังก์ชันสตริงที่ฉันสามารถใช้เพื่อส่งผ่านอักขระตัวอย่างเช่น "(" และได้ลบอินสแตนซ์ทั้งหมดภายในสตริงหรือไม่
96 c++  string  character 

6
เหตุใดการกำหนดค่าให้กับฟิลด์บิตจึงไม่ให้ค่าเดิมกลับคืนมา
ฉันเห็นรหัสด้านล่างในโพสต์ Quora นี้ : #include <stdio.h> struct mystruct { int enabled:1; }; int main() { struct mystruct s; s.enabled = 1; if(s.enabled == 1) printf("Is enabled\n"); // --> we think this to be printed else printf("Is disabled !!\n"); } ในทั้งสอง C & C ++ ผลลัพธ์ของโค้ดที่เป็นที่ไม่คาดคิด , ถูกปิดใช้งาน !! แม้ว่าจะมีการให้คำอธิบายที่เกี่ยวข้องกับ "บิตเครื่องหมาย" …

13
วิธีคำนวณความแตกต่างของเวลาใน C ++
วิธีที่ดีที่สุดในการคำนวณความแตกต่างของเวลาใน C ++ คืออะไร? ฉันกำหนดเวลาความเร็วในการดำเนินการของโปรแกรมดังนั้นฉันจึงสนใจเป็นมิลลิวินาที ยังดีกว่าวินาทีมิลลิวินาที .. คำตอบที่ยอมรับใช้งานได้ แต่ต้องมี ctime หรือ time.h ตามที่ระบุไว้ในความคิดเห็น
96 c++ 

1
C ++ แปลงเวกเตอร์ <int> เป็นเวกเตอร์ <คู่>
เป็นวิธีการทำความสะอาดที่ดีที่จะแปลงอะไรไปstd::vector&lt;int&gt; intVec std::vector&lt;double&gt; doubleVecหรือโดยทั่วไปแล้วในการแปลงเวกเตอร์สองประเภทที่เปลี่ยนแปลงได้?

2
กำลังใช้ malloc สำหรับพฤติกรรมที่ไม่ได้กำหนดไว้จนถึง C ++ 20
ฉันได้รับแจ้งว่ารหัสต่อไปนี้มีพฤติกรรมที่ไม่ได้กำหนดไว้จนถึง C ++ 20: int *p = (int*)malloc(sizeof(int)); *p = 10; เป็นเช่นนั้นจริงหรือ? อาร์กิวเมนต์คืออายุการใช้งานของintอ็อบเจ็กต์ไม่ได้เริ่มต้นก่อนกำหนดค่าให้กับมัน ( P0593R6 ) ในการแก้ไขปัญหาnewควรใช้ตำแหน่ง: int *p = (int*)malloc(sizeof(int)); new (p) int; *p = 10; เราต้องเรียกตัวสร้างเริ่มต้นที่ไม่สำคัญเพื่อเริ่มอายุการใช้งานของวัตถุหรือไม่? ในเวลาเดียวกันรหัสไม่มีพฤติกรรมที่ไม่ได้กำหนดใน C บริสุทธิ์ แต่จะเป็นอย่างไรถ้าฉันจัดสรรintรหัสใน C และใช้ในรหัส C ++? // C source code: int *alloc_int(void) { int *p = (int*)malloc(sizeof(int)); *p = 10; …

2
การประกาศมีผลต่อเนมสเปซมาตรฐานหรือไม่
#include &lt;iostream&gt; #include &lt;cmath&gt; /* Intentionally incorrect abs() which seems to override std::abs() */ int abs(int a) { return a &gt; 0? -a : a; } int main() { int a = abs(-5); int b = std::abs(-5); std::cout&lt;&lt; a &lt;&lt; std::endl &lt;&lt; b &lt;&lt; std::endl; return 0; } ฉันคาดว่าผลลัพธ์จะเป็น-5และ5แต่ผลลัพธ์คือ-5และ-5. ฉันสงสัยว่าทำไมถึงเกิดกรณีนี้ขึ้น? …
96 c++  std  reserved 

17
พอยน์เตอร์ของฟังก์ชันคืออะไร?
ฉันมีปัญหาในการดูยูทิลิตี้ของตัวชี้ฟังก์ชัน ฉันเดาว่ามันอาจมีประโยชน์ในบางกรณี (มีอยู่จริง) แต่ฉันไม่สามารถนึกถึงกรณีที่ใช้ตัวชี้ฟังก์ชันได้ดีกว่าหรือหลีกเลี่ยงไม่ได้ คุณช่วยยกตัวอย่างการใช้ฟังก์ชันพอยน์เตอร์ (ใน C หรือ C ++) ให้ดีได้ไหม
96 c++  c  function  pointers  c++-faq 

2
ตัวอย่างการสร้าง UUID โดยใช้ Boost ใน C ++
ฉันต้องการสร้าง UUID แบบสุ่มเนื่องจากอินสแตนซ์ในโปรแกรมของฉันมีตัวระบุที่ไม่ซ้ำกันเป็นสิ่งสำคัญ ฉันตรวจสอบBoost UUIDแล้ว แต่ไม่สามารถจัดการเพื่อสร้าง UUID ได้เพราะฉันไม่เข้าใจว่าจะใช้คลาสและวิธีการใด ฉันจะขอบคุณถ้ามีคนให้ตัวอย่างวิธีการบรรลุเป้าหมายนี้
96 c++  boost  uuid  boost-uuid 

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