รวมเทคนิค C++ ที่ช่วยเพิ่มความเร็วในการเขียนโค้ดสำหรับการแข่งขัน (Competitive Programming) คล้ายกับบทความ "Hidden features of C++" แต่เน้นบริบทการแข่งขัน
เทคนิคสำคัญ
- ตรวจสอบคู่/คี่:
(n & 1) != 0ใช้ bitwise AND - คูณ/หาร 2n: Shift left/right (
x << n,x >> n) - Swap โดยไม่ใช้ temp: XOR swap
x ^= y; y ^= x; x ^= y; - วนลูปสตริง:
for(int i=0; s[i]; i++)ไม่ต้อง strlen() - emplace_back(): เร็วกว่า push_back() สำหรับ vector
- __gcd(x, y): หาตัวหารร่วมมากในตัว
- ขนาดอาร์เรย์: main ~106, global ~107
- หาหลักแรก/นับหลัก: ใช้ log10()
- เช็คกำลังของ 2:
x && !(x & (x-1)) - all_of/any_of/none_of: ตรวจสอบเงื่อนไขใน container
- copy_n: คัดลอกอาร์เรย์
- iota: สร้างลำดับตัวเลข/ตัวอักษร
- Binary literal:
0b1101 - Keyword alternatives:
and,or,not
การเชี่ยวชาญเทคนิคเหล่านี้ช่วยลดเวลาเขียนโค้ดและเพิ่มประสิทธิภาพการทำงานได้จริง