Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++
C++
  1. ความแม่นยำของ Floating Point ใน C++ คืออะไร?

    ใน C++ ขนาดของตัวเลขจุดลอยตัว (floating point) จะมีขนาด 4 ไบต์ (float) หรือ 8 ไบต์ (double) ทำให้จัดเก็บตำแหน่งทศนิยมได้จำนวนจำกัด ตัวอย่างเช่น 1/3 = 0.333333... ต่อเนื่องไปเรื่อยๆ หากเก็บไว้ในตัวแปรแบบ floating point จะจัดเก็บเฉพาะหลักที่สำคัญ (significant digits) ค่าเริ่มต้นคือ 6 หลัก ดังนั้นปกติ

  2. IPC ผ่าน Shared Memory

    Shared memory คือหน่วยความจำร่วมระหว่าง 2 process หรือมากกว่า แต่ทำไมต้อง share memory หรือ IPC อื่นๆ? แต่ละ process มี address space ของตัวเอง หาก process ใดต้องการสื่อสารข้อมูลจาก address space ของมันไปยัง process อื่น จำเป็นต้องใช้ IPC สื่อสารได้ทั้ง related และ unrelated processes Related proces

  3. IPC ด้วย Message Queues

    ทำไมต้องใช้ message queues เมื่อเรามี shared memory แล้ว? เหตุผลหลายประการ ลองแยกเป็นจุดๆ: ข้อความถูกอ่านโดย process หนึ่งแล้วจะหายไป ไม่พร้อมสำหรับ process อื่น แต่ shared memory ข้อมูลพร้อมสำหรับหลาย process ต้องการสื่อสารด้วยข้อความขนาดเล็ก Shared memory ต้องการ synchronization เมื่อหลาย p

  4. การใช้ range-based for loop กับ std::map ใน C++

    ที่นี่เราจะดูวิธีใช้ range-based for loop สำหรับ std::map ใน C++ map เก็บ key-value pairs โดยเก็บเป็น pair objects pair ใช้ templates จึงใช้ข้อมูลชนิดใดก็ได้ เพื่อใช้ range-based for loop กำหนด for loop วนผ่านแต่ละ pair ของ map มาดูโค้ด ตัวอย่างโค้ด #include <iostream> #include <map> usi

  5. Proxy Class ใน C++ คืออะไร

    Proxy class คือ Proxy design pattern ออบเจ็กต์หนึ่งให้ interface ที่ปรับแต่งแล้วสำหรับอีกคลาสหนึ่ง มาดูตัวอย่าง เราต้องการสร้างคลาสอาร์เรย์ที่เก็บค่า binary [0,1] เท่านั้น ลองครั้งแรก: class BinArray { int arr[10]; int& operator[](int i) { // ไม่มีการตรวจสอบค่า } }; โค้ดนี้ไม่ตรว

  6. การสร้าง Timer ด้วย C++11

    ที่นี่เราจะสร้าง Timer ด้วย C++11 สร้างคลาสชื่อ later มีคุณสมบัติ: int (milliseconds รอจนกว่าจะรันโค้ด) bool (ถ้า true คืนค่าทันที และรันโค้ดหลังเวลาที่กำหนดบน thread อื่น) variable arguments (ส่งให้ std::bind) สามารถเปลี่ยน chrono::milliseconds เป็น nanoseconds หรือ microseconds เพื่อเปลี่ย

  7. Dynamic Initialization ของตัวแปรใน C++

    Dynamic initialization ของออบเจ็กต์หมายถึงการเริ่มต้นออบเจ็กต์ขณะรันโปรแกรม (run time) ค่าเริ่มต้นของออบเจ็กต์ถูกกำหนดระหว่างรันโปรแกรม สามารถทำได้โดยใช้ constructors และส่งค่าพารามิเตอร์ไปยัง constructors การเริ่มต้นแบบนี้จำเป็นสำหรับเริ่มต้นตัวแปรของคลาสระหว่างรันไทม์ ทำไมต้องการ dynamic initializ

  8. I/O Redirection ใน C++

    ใน C ใช้ freopen() สำหรับ redirection เปลี่ยน FILE pointer ไปยัง stream อื่น ไวยากรณ์: FILE *freopen(const char* filename, const char* mode, FILE *stream) ใน C++ ใช้ streams มี 3 ประเภท: istream: รองรับ input เท่านั้น ostream: รองรับ output เท่านั้น iostream: ใช้ input และ output ได้ คลาสเหล

  9. Iterator Invalidation ใน C++

    ใน C++ มี container หลายอย่าง vector, list, set, map ใช้ iterator วนลูป ต้องระวังเพราะ iterator อาจ invalidated ได้ หากรูปทรงหรือขนาดเปลี่ยนแปลง ตัวอย่างต่อไปแสดงปัญหา invalidation ตัวอย่างปัญหา #include <iostream> #include <vector> using namespace std; int main() { vector<int>

  10. Composite Design Pattern ใน C++

    Composite pattern ใช้เมื่อต้องจัดการกลุ่มออบเจ็กต์คล้ายกับออบเจ็กต์เดียว Composite pattern รวมออบเจ็กต์ในโครงสร้างต้นไม้ แสดงลำดับชั้นส่วนและทั้งหมด เป็น structural pattern Pattern นี้สร้างคลาสที่มีกลุ่มออบเจ็กต์ของตัวเอง คลาสนี้ให้วิธีแก้ไขกลุ่มออบเจ็กต์เดียวกัน ตัวอย่าง: พนักงานในองค์กร (มีรูปภาพแ

  11. Output Iterators ใน C++

    ที่นี่เราจะดู Output iterators ใน C++ คุณสมบัติ: ใช้แก้ไขค่าของ container อ่านข้อมูลจาก container ไม่ได้ One-way, write-only iterator Increment ได้ แต่ decrement ไม่ได้ มี 2 ส่วนย่อย: Insert Iterator และ ostream Iterator Insert Iterator ใช้แทรกสมาชิกเข้า container Assignment operator จะแ

  12. Bidirectional Iterators ใน C++

    ที่นี่เราจะดูแนวคิด Bidirectional iterators ใน C++ Bidirectional iterators รองรับฟีเจอร์ของ forward iterators ทั้งหมด และรองรับ prefix/postfix decrement operators Iterator ประเภทนี้เข้าถึงสมาชิกได้ทั้งสองทิศทาง: ไปข้างหน้าและถอยหลัง Random access iterator ก็เป็นประเภทหนึ่งของ bidirectional it

  13. โปรแกรม C++ สร้าง Random Linear Extension สำหรับ DAG

    ที่นี่เราจะสร้าง Random Linear Extension ของ Directed Acyclic Graph (DAG) Linear extension คือ topological sorting ของ DAG พิจารณากราฟดังรูป Topological sorting สำหรับ DAG คือการเรียงลำดับโหนดแบบเส้นตรง สำหรับทุกขอบ u-v ของกราฟมีทิศทาง โหนด u จะมาก่อนโหนด v ในลำดับ เนื่องจากโหนดต้นทาง (source) จะมาห

  14. โปรแกรม C++ ใช้งาน Johnson's Algorithm

    ที่นี่เราจะดู Johnsons Algorithm เพื่อหาเส้นทางสั้นที่สุดระหว่างสองโหนด (มีรูปภาพแสดงกราฟ) กราฟที่ให้มา ระยะทางสั้นที่สุดระหว่างขอบ (edges) เป็นดังนี้ โปรแกรมจะรับจำนวนโหนด จำนวนขอบ และขอบพร้อมค่าใช้จ่าย Input - Vertices: 3, Edges: 5Edge with costs:1 2 82 1 121 3 223 1 62 3 4 Output - Distance matri

  15. วิธีหยุดไม่ให้ C++ Console Application ปิดทันที

    บางครั้งคอนโซลปิดทันทีหลังแสดงผล ทำให้ดูไม่ทัน วิธีแก้คือใช้ getchar() ท้ายโปรแกรม จะรอรับตัวอักษรหนึ่งตัวก่อนปิด ตัวอย่างโค้ด #include <iostream> using namespace std; int main() { cout << Hello World << endl; getchar(); } ผลลัพธ์ Hello World 5 ที่นี่กดปุ่ม 5 ขณะที่รอรับตัวอักษร

  16. กฎการเรียก Superclass Constructor ใน C++

    ใน C++ เราสามารถ derive คลาสได้ บางครั้งต้องเรียก constructor ของ superclass (base class) เมื่อเรียก constructor ของ derived class ไม่เหมือน Java ที่มีตัวแปรอ้างอิง super หาก constructor ไม่มีพารามิเตอร์ จะถูกเรียกอัตโนมัติพร้อม derived class มิฉะนั้นต้องวาง superclass constructor ใน initializer lis

  17. ความแตกต่างระหว่าง iostream และ iostream.h ใน C++

    ที่นี่เราจะดูความแตกต่างระหว่าง iostream และ iostream.h ใน C++ ไฟล์ iostream.h เป็นเฮดเดอร์ที่ใช้โดยไลบรารี I/O streams ตอนแรกๆ พัฒนาโดย AT&T สำหรับ C++ รุ่นต้นๆ ที่ยังไม่มาตรฐาน iostream เป็นเฮดเดอร์ของ C++ standard library เผยแพร่ครั้งแรกในปี 1998 เพื่อให้เข้าถึง standard I/O streams ไม่มีมาตรฐาน

  18. เปรียบเทียบ Exception Handling ใน C++ และ Java

    คุณสมบัติ Exception Handling มีในภาษา object-oriented เกือบทุกภาษา รวมถึง C++ และ Java มีความคล้ายคลึงกัน เช่น ทั้งคู่ใช้ try-catch block แต่ก็มีความแตกต่าง: ใน C++ สามารถ throw ข้อมูลประเภทไหนก็ได้: primitive types และ pointers ใน Java throw ได้เฉพาะ throwable objects (subclass ของ Throwable) ตัวอย

  19. Foreach Loop ใน C++ และ Java

    ใน C++ และ Java มีลูปแบบหนึ่งชื่อ foreach loop ไม่มีใน C ลูปนี้เพิ่มเข้ามาใน C++11 และ Java JDK 1.5.0 ข้อดีคือเข้าถึงสมาชิกได้เร็วโดยไม่ต้อง initialization, testing, increment/decrement ใช้เข้าถึงทุกสมาชิกในอาร์เรย์หรือ container เรียกว่า foreach แต่ใช้คีย์เวิร์ด for ไวยากรณ์ต่างจาก for ปกติ: for (d

  20. Scope Resolution Operator เทียบ this Pointer ใน C++

    ที่นี่เราจะดูตัวอย่าง C++ และลองดูว่าจะได้ผลลัพธ์อะไร จากนั้นจะเข้าใจวัตถุประสงค์และการทำงานของ scope resolution operator และ this pointer ใน C++ ถ้าโค้ดมีสมาชิกชื่อ x และเราต้องการใช้ฟังก์ชันอื่นที่รับอาร์กิวเมนต์ชื่อเดียวกัน x ภายในฟังก์ชันนั้น ถ้าใช้ x จะซ่อนตัวแปรสมาชิก และใช้ตัวแปรท้องถิ่นแทน ม

Total 6007 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:63/301  20-คอมพิวเตอร์/Page Goto:1 57 58 59 60 61 62 63 64 65 66 67 68 69