Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. ฟังก์ชัน list::merge() ใน C++ STL

    ฟังก์ชัน list::merge() ใน C++ STL list::merge() คืออะไร? รวม list สองอันที่ เรียงแล้ว (sorted) เข้าด้วยกันเป็น list เดียวที่ยังเรียงอยู่ ได้ผลลัพธ์ใน list ตัวแรก (list2 จะว่างเปล่าหลัง merge) Syntax list1.merge(list2); // merge แบบ default (operator<) list1.merge(list2, compa

  2. ฟังก์ชัน list::pop_back() ใน C++ STL

    ฟังก์ชัน list::pop_back() ใน C++ STL List ใน STL คืออะไร? List คือโครงสร้างข้อมูลที่รองรับการแทรก/ลบที่ตำแหน่งไหนก็ได้ในเวลาคงที่ (O(1)) implemented เป็น doubly linked list จองหน่วยความจำแบบไม่ต่อเนื่อง เข้าถึงโดยตรงช้ากว่า vector/deque list::pop_back() ลบองค์ประกอบตัวสุดท้ายของ list container ขนา

  3. deque::at() และ deque::swap() ใน C++ STL

    deque::at() และ deque::swap() ใน C++ STL Deque (Double-ended Queue) คืออะไร? Deque คือ sequence container ที่ขยาย/หดได้ที่ทั้งสองข้าง คล้าย vector แต่ไม่รับประกัน contiguous storage เหมาะสำหรับ insertion/deletion ที่ทั้งสองข้าง deque::at() เข้าถึงองค์ประกอบที่ตำแหน่งกำหนด พร้อม bounds checking (โย

  4. การรวม Vector สองอันด้วย STL ใน C++

    การรวม Vector สองอัน (Join/Union Two Vectors) ด้วย STL ใน C++ ใช้ std::set_union จาก <algorithm> รวม vector สองอันที่เรียงแล้ว ได้ผลลัพธ์ที่เรียงและไม่ซ้ำ (union) ตัวอย่าง #include <bits/stdc++.h> using namespace std; int main() { vector<int> vector1 = { 1, 45, 54, 71, 76, 12

  5. การสลับอาร์เรย์สองอาร์เรย์ขนาดเท่ากันอย่างรวดเร็วใน C++

    การสลับอาร์เรย์สองอาร์เรย์ขนาดเท่ากันอย่างรวดเร็ว (Quick Swap Two Arrays of Same Size) ใน C++ ใช้ std::swap จาก <utility> สลับอาร์เรย์ C-style array ขนาดคงที่ได้โดยตรง (C++11 ขึ้นไป) ตัวอย่าง #include <iostream> #include <utility> using namespace std; int main() { int a[] = {

  6. การจำกัดการจองหน่วยความความจำแบบไดนามิกของออบเจ็กต์ใน C++

    การจำกัดการจองหน่วยความจำแบบไดนามิกของออบเจ็กต์ (Restrict Dynamic Allocation of Objects) ใน C++ ทำให้คลาสไม่สามารถสร้างออบเจ็กต์ด้วย new (dynamic allocation) ได้ โดยตั้งค่า operator new เป็น private ตัวอย่าง #include <iostream> using namespace std; class Test { // ทำให้ operator new เป็น

  7. การกลับลำดับ Vector ด้วย STL ใน C++

    การกลับลำดับ Vector (Reverse Vector) ด้วย STL ใน C++ ใช้ std::reverse จาก <algorithm> กลับลำดับองค์ประกอบใน vector ตัวอย่าง #include <bits/stdc++.h> using namespace std; int main() { vector<int> a = { 1, 45, 54, 71, 76, 12 }; cout << Vector: ; for (int i = 0; i

  8. การเก็บข้อมูล Triplet ใน Vector ใน C++

    การเก็บข้อมูล Triplet (3 ค่า) ใน Vector ใน C++ เพื่อเก็บค่า 3 ค่าในองค์ประกอบเดียวของ vector สร้าง struct (user-defined type) แล้วสร้าง vector ของ struct นั้น ตัวอย่าง #include <bits/stdc++.h> using namespace std; struct Test { int x, y, z; }; int main() { // สร้าง vector ของ user-d

  9. การสลับช่วงย่อยระหว่างคอนเทนเนอร์ต่างกันใน C++

    การสลับช่วงย่อยระหว่างคอนเทนเนอร์ต่างกัน (Swapping Subranges from Different Containers) ใน C++ สามารถสลับองค์ประกอบระหว่างคอนเทนเนอร์ที่ต่างกันได้ด้วย std::swap_ranges จาก <algorithm> ตัวอย่าง #include <algorithm> #include <iostream> #include <list> #include <vector> u

  10. Template Specialization ใน C++

    Template Specialization ใน C++ ฟังก์ชันมาตรฐาน เช่น sort() ใช้กับทุกประเภทข้อมูลได้ และทำงานเหมือนกันหมด แต่ถ้าต้องการพฤติกรรมพิเศษสำหรับประเภทข้อมูลเฉพาะ (แม้แต่ user-defined type) สามารถใช้ Template Specialization ได้ ตัวอย่าง #include <iostream> using namespace std; template <class T&g

  11. เทมเพลตและตัวแปร Static ใน C++

    เทมเพลตและตัวแปร Static ใน C++ (Templates and Static Variables) ใน C++ สำหรับ function templates และ class templates แต่ละ instance (การสร้างเฉพาะ型) จะมีตัวแปร static ตัวของมันเอง (แยกจาก instance อื่น) ตัวอย่าง #include <iostream> using namespace std; template <typename T> void fun(co

  12. การแบนต้นไม้แบนารีเป็น Linked List (Flatten Binary Tree to Linked List) ใน C++

    การแบนต้นไม้แบนารีเป็น Linked List (Flatten Binary Tree to Linked List) แบน (flatten) ต้นไม้แบนารีให้กลายเป็น linked list แบบ in-place โดย right pointer ชี้ไปโหนดถัดไปใน preorder traversal และ left pointer เป็น null ตัวอย่าง: ต้นไม้ [1,2,5,3,4] → 1→2→3→4→5 (preorder) ขั้นตอนการแก้ปัญหา (Reverse Pos

  13. การจัดเรียงใหม่ Linked List (Reorder List) ใน C++

    การจัดเรียงใหม่ Linked List (Reorder List) ให้ linked list L1→L2→L3→...→Ln จัดเรียงใหม่เป็น L1→Ln→L2→L(n-1)→... โดยไม่เปลี่ยนค่าโหนด แค่เปลี่ยน pointer ตัวอย่าง: [1,2,3,4,5] → [1,5,2,4,3] ขั้นตอนการแก้ปัญหา หาจุดกึ่งกลางด้วย slow/fast pointers กลับ (reverse) ครึ่งหลังของ list ผสาน (merge) สองครึ่ง

  14. การจัดเรียง Linked List (Sort List) ใน C++

    การจัดเรียง Linked List (Sort List) จัดเรียง Linked List ในเวลา O(n log n) และพื้นที่ O(1) (ไม่รวม stack recursion) ใช้ Merge Sort แบบ Top-down ตัวอย่าง: [4,2,1,3] → [1,2,3,4] ขั้นตอนการแก้ปัญหา (Merge Sort) ฟังก์ชัน merge(l1, l2) รวมสอง sorted list ฟังก์ชัน sortList(head): ถ้า head == null || he

  15. เศษส่วนเป็นทศนิยมซ้ำ (Fraction to Recurring Decimal) ใน C++

    เศษส่วนเป็นทศนิยมซ้ำ (Fraction to Recurring Decimal) ให้ตัวเศษและตัวส่วนเป็นจำนวนเต็ม แปลงเป็นสตริงทศนิยม ถ้าส่วนทศนิยมซ้ำ ให้ครอบส่วนที่ซ้ำด้วยวงเล็บ ตัวอย่าง: 2/3 → 0.(6), 100/6 → 16.(6) ขั้นตอนการแก้ปัญหา (Long Division + Hash Map) ถ้าตัวเศษ 0 คืนค่า 0 จัดการเครื่องหมายลบ คำนวณส่วนจำนวนเต็ม div

  16. ขนาด Subarray น้อยที่สุดที่ผลรวม ≥ S (Minimum Size Subarray Sum) ใน C++

    ขนาด Subarray น้อยที่สุดที่ผลรวม ≥ S (Minimum Size Subarray Sum) ให้อาร์เรย์ n องค์ประกอบ และจำนวนเต็มบวก s หาความยาวน้อยที่สุดของ subarray ติดต่อกันที่ผลรวม ≥ s ถ้าไม่มีคืนค่า 0 ตัวอย่าง: [2,3,1,2,4,3], s=7 → 2 (subarray [4,3]) ขั้นตอนการแก้ปัญหา (Sliding Window / Two Pointers) ans = 0 (หรือ INT_

  17. สี่เหลี่ยมจัตุรัสขนาดใหญ่ที่สุด (Maximal Square) ใน C++

    สี่เหลี่ยมจัตุรัสขนาดใหญ่ที่สุด (Maximal Square) ให้เมทริกซ์ 2D บाइनนารี (0 และ 1) หาสี่เหลี่ยมจัตุรัสที่ใหญ่ที่สุดที่ประกอบด้วย 1 เท่านั้น คืนค่าพื้นที่ (area) ตัวอย่าง: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 → พื้นที่ 4 (สี่เหลี่ยม 2x2) ขั้นตอนการแก้ปัญหา (Dynamic Programming) สร้าง DP table dp

  18. Wiggle Sort II ใน C++

    Wiggle Sort II จัดเรียงอาร์เรย์ไม่เรียบลับ ให้เป็นรูปแบบ nums[0] nums[2] < nums[3] ... (สลับน้อย-มาก) ตัวอย่าง: [1,5,1,1,6,4] → [1,4,1,5,1,6] (หรือคำตอบที่ถูกต้องอื่นๆ) ขั้นตอนการแก้ปัญหา (Virtual Indexing + nth_element) คัดลอกอาร์เรย์เป็น x แล้วเรียงลำดับ กำหนด i = n-1 (ชี้ค่ามากสุด), j = (n-1)/

  19. นับเรือรบในกระดาน (Battleships in a Board) ใน C++

    นับเรือรบในกระดาน (Battleships in a Board) ให้กระดาน 2D ที่มี X แทนเรือรบ และ . แทนช่องว่าง เรือรบเป็นรูป 1xN หรือ Nx1 (แนวนอนหรือแนวตั้ง) และมีช่องว่างอย่างน้อย 1 ช่องคั่นระหว่างเรือ นับจำนวนเรือรบ ตัวอย่าง: X . . X . . . X . . . X → 2 เรือ (ตัวแนวตั้งขนาด 3 และตัวแนวนอนขนาด 1) ขั้นตอนการแก้ปัญหา

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:142/301  20-คอมพิวเตอร์/Page Goto:1 136 137 138 139 140 141 142 143 144 145 146 147 148