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

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



18
เหตุใดโปรแกรมเมอร์ C ++ ควรลดการใช้ 'ใหม่' ให้น้อยที่สุด
ฉันสะดุดกับคำถามStack Overflow หน่วยความจำรั่วด้วย std :: string เมื่อใช้ std :: list <std :: string>และหนึ่งในความเห็นบอกว่า: หยุดใช้newมาก ฉันไม่เห็นเหตุผลที่คุณใช้ใหม่ทุกที่ที่คุณทำ คุณสามารถสร้างวัตถุตามมูลค่าในC ++และเป็นหนึ่งในข้อได้เปรียบอย่างมากสำหรับการใช้ภาษา คุณไม่ต้องจัดสรรทุกอย่างบนกอง หยุดคิดเหมือนโปรแกรมเมอร์Java ฉันไม่แน่ใจจริงๆว่าเขาหมายถึงอะไร เหตุใดจึงควรสร้างวัตถุตามค่าในC ++บ่อยที่สุดเท่าที่จะเป็นไปได้และวัตถุภายในนั้นแตกต่างกันอย่างไร ฉันตีความคำตอบผิดหรือไม่


11
รหัส C ++ สำหรับการทดสอบการคาดคะเนของ Collatz เร็วกว่าชุดประกอบที่เขียนด้วยมือ - ทำไม?
ฉันเขียนโซลูชันทั้งสองนี้สำหรับProject Euler Q14ในแอสเซมบลีและใน C ++ พวกมันเหมือนกันกับวิธีเดรัจฉานแรงแบบเดียวกันสำหรับการทดสอบการคาดคะเนของโคลลาตซ์ โซลูชันการประกอบถูกประกอบด้วย nasm -felf64 p14.asm && gcc p14.o -o p14 คอมไพล์ด้วย C ++ g++ p14.cpp -o p14 การชุมนุม p14.asm section .data fmt db "%d", 10, 0 global main extern printf section .text main: mov rcx, 1000000 xor rdi, rdi ; max i xor rsi, rsi …

30
วิธีที่ดีที่สุดในการตัด std :: string คืออะไร?
ขณะนี้ฉันใช้รหัสต่อไปนี้เพื่อตัดทั้งหมดstd::stringsในโปรแกรมของฉัน: std::string s; s.erase(s.find_last_not_of(" \n\r\t")+1); มันใช้งานได้ดี แต่ฉันสงสัยว่ามีบางกรณีที่อาจล้มเหลวหรือไม่? แน่นอนว่าคำตอบของทางเลือกที่หรูหราและวิธีการแก้ปัญหาด้านซ้ายก็ยินดีต้อนรับ
812 c++  trim  stdstring 


4
T&& (เครื่องหมายคู่คู่) หมายถึงอะไรใน C ++ 11
ฉันได้รับการมองเข้าไปในบางส่วนของคุณสมบัติใหม่ของ C ++ 11 T&& varและเป็นหนึ่งฉันได้สังเกตเห็นเป็นเครื่องหมายคู่ในตัวแปรประกาศเช่น สำหรับการเริ่มต้นสัตว์ร้ายตัวนี้เรียกว่าอะไร? ฉันต้องการให้ Google อนุญาตให้เราค้นหาเครื่องหมายวรรคตอนเช่นนี้ มันหมายความว่าอะไรกันแน่? จากภาพรวมในครั้งแรกดูเหมือนว่าจะเป็นการอ้างอิงสองครั้ง (เช่นตัวชี้ดับเบิลแบบ C T** var) แต่ฉันมีความลำบากในการนึกถึงกรณีการใช้งานสำหรับสิ่งนั้น

9
ทำไมจึงใช้คำสั่ง do-while และ if-else ที่ไม่มีความหมายในแมโคร
ในมาโคร C / C ++ หลายรุ่นฉันเห็นโค้ดของมาโครห่อหุ้มสิ่งที่ดูเหมือนเป็นdo whileลูปที่ไม่มีความหมาย นี่คือตัวอย่าง #define FOO(X) do { f(X); g(X); } while (0) #define FOO(X) if (1) { f(X); g(X); } else ฉันไม่เห็นว่าdo whileกำลังทำอะไรอยู่ ทำไมไม่ลองเขียนโดยไม่ได้ล่ะ #define FOO(X) f(X); g(X)
787 c++  c  c-preprocessor  c++-faq 

25
วิธีการแปลง std :: string เป็นตัวเล็ก?
ฉันต้องการแปลง a เป็นstd::stringตัวพิมพ์เล็ก ฉันรู้ถึงฟังก์ชั่นtolower()นี้ แต่ในอดีตที่ฉันเคยมีปัญหากับฟังก์ชั่นนี้และมันก็แทบจะไม่เหมาะอย่างยิ่งถ้าใช้กับ a std::stringจะต้องวนซ้ำตัวละครแต่ละตัว มีทางเลือกอื่นที่ใช้งานได้ 100% หรือไม่

7
push_back กับ emplace_back
ฉันบิตสับสนเกี่ยวกับความแตกต่างระหว่างและpush_backemplace_back void emplace_back(Type&& _Val); void push_back(const Type& _Val); void push_back(Type&& _Val); เนื่องจากมีการใช้งานpush_backมากเกินไปในการอ้างอิงค่า rvalue ฉันไม่เห็นเลยว่าจุดประสงค์ของการemplace_backเป็นอย่างไร

2
เหตุใดโปรแกรมของฉันจึงช้าเมื่อวนลูปมากกว่า 8192 องค์ประกอบ
นี่คือสารสกัดจากโปรแกรมที่เป็นปัญหา เมทริกซ์img[][]มีขนาด SIZE × SIZE และเริ่มต้นได้ที่: img[j][i] = 2 * j + i จากนั้นคุณสร้างเมทริกซ์res[][]และแต่ละฟิลด์ในที่นี้จะถูกทำให้เป็นค่าเฉลี่ยของ 9 ฟิลด์รอบ ๆ มันในเมทริกซ์ img เส้นขอบจะเหลือ 0 เพื่อความเรียบง่าย for(i=1;i<SIZE-1;i++) for(j=1;j<SIZE-1;j++) { res[j][i]=0; for(k=-1;k<2;k++) for(l=-1;l<2;l++) res[j][i] += img[j+l][i+k]; res[j][i] /= 9; } นั่นคือทั้งหมดที่มีให้กับโปรแกรม เพื่อความสมบูรณ์ 'นี่คือสิ่งที่มาก่อน ไม่มีรหัสมา อย่างที่คุณเห็นมันเป็นเพียงการเริ่มต้น #define SIZE 8192 float img[SIZE][SIZE]; // input image float res[SIZE][SIZE]; …

12
std :: wstring VS std :: string
ผมไม่สามารถที่จะเข้าใจความแตกต่างระหว่างและstd::string std::wstringฉันรู้ว่าwstringรองรับตัวละครกว้างเช่นตัวอักษร Unicode ฉันมีคำถามต่อไปนี้: เมื่อใดที่ฉันควรใช้std::wstringมากกว่าstd::string? สามารถstd::stringเก็บชุดอักขระ ASCII ทั้งหมดรวมถึงอักขระพิเศษได้หรือไม่ มีการstd::wstringสนับสนุนจากทุกที่นิยม C ++ คอมไพเลอร์? " ตัวกว้าง " คืออะไร?
741 c++  string  unicode  c++-faq  wstring 


9
รหัส“ เป็นมิตรกับแคช” คืออะไร?
ความแตกต่างระหว่าง " รหัสที่ไม่เป็นมิตรแคช " และ " รหัสที่เป็นมิตรกับแคช " คืออะไร? ฉันจะแน่ใจได้อย่างไรว่าฉันเขียนโค้ดที่มีประสิทธิภาพแคช

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