Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

C++ Tricks สำหรับการแข่งขันเขียนโปรแกรม

รวมเทคนิค 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

การเชี่ยวชาญเทคนิคเหล่านี้ช่วยลดเวลาเขียนโค้ดและเพิ่มประสิทธิภาพการทำงานได้จริง