หน้าแรก
หน้าแรก
ในส่วนนี้ เราจะพูดถึงข้อเท็จจริงที่น่าสนใจเกี่ยวกับคลาสเสมือนใน C++ เราจะเห็นสองกรณีก่อน แล้วเราจะวิเคราะห์ข้อเท็จจริงกัน ขั้นแรกให้รันโปรแกรมโดยไม่ต้องใช้ฟังก์ชันเสมือนใดๆ รันโปรแกรมโดยใช้ฟังก์ชันเสมือนใดๆ ภายใต้ฟังก์ชันที่ไม่ใช่เสมือน ตัวอย่าง ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดี
ในส่วนนี้ เราจะพูดถึงข้อเท็จจริงที่น่าสนใจที่จำกัดการเข้าถึงเมธอดคลาสที่ได้รับใน C++ เราจะดูตัวอย่างและวิเคราะห์ผลลัพธ์เพื่อทราบข้อมูลเพิ่มเติมเกี่ยวกับข้อจำกัดของการใช้เมธอดคลาสที่ได้รับใน C++ ตัวอย่าง (C++) ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น - #include <iostream> using namesp
ในส่วนนี้ เราจะพูดถึงตำแหน่งที่ตัวแปรและอ็อบเจ็กต์ถูกเก็บไว้ในหน่วยความจำเมื่อคอมไพล์โปรแกรม C++ อย่างที่เราทราบ มีหน่วยความจำสองส่วนที่สามารถจัดเก็บวัตถุได้ - กอง - สมาชิกทั้งหมดที่ถูกประกาศภายในบล็อกของหน่วยความจำ จะเก็บไว้ในส่วนสแต็ค ฟังก์ชันหลักยังเป็นฟังก์ชัน ดังนั้นองค์ประกอบภายในจะถูกจัดเก
สมมติว่าเรามีคลาสว่างหนึ่งคลาสใน C++ ตอนนี้ให้เราตรวจสอบว่าขนาดของมันคือ 0 หรือไม่ อันที่จริง มาตรฐานไม่อนุญาตให้อ็อบเจ็กต์ (หรือคลาส) มีขนาด 0 เนื่องจากจะทำให้อ็อบเจ็กต์ที่แตกต่างกันสองออบเจกต์มีตำแหน่งหน่วยความจำเดียวกันได้ นี่คือเหตุผลเบื้องหลังแนวคิดที่ว่าแม้แต่คลาสว่างก็ต้องมีขนาดอย่างน้อย 1 เป
ในปัญหานี้ เราจะมาดูกันว่าเราจะสร้างคลาสได้อย่างไร โดยที่เราสามารถสร้างอ็อบเจ็กต์ผ่านการจัดสรรหน่วยความจำแบบไดนามิกเท่านั้น ไม่อนุญาตให้สร้างอ็อบเจ็กต์โดยตรง ความคิดนั้นง่าย เราต้องสร้าง destructor ส่วนตัวสำหรับคลาสนั้น เมื่อ destructor เป็นส่วนตัว คอมไพเลอร์จะสร้างข้อผิดพลาดของคอมไพเลอร์สำหรับอ็อบ
ในส่วนนี้ เราจะมาดูวิธีสร้างดัชนีโดยใช้พอยน์เตอร์ที่ส่งกลับโดย STL ใน C++ ดังที่เราทราบฟังก์ชัน inbuilt จำนวนมากใน C ++ จะส่งคืนพอยน์เตอร์ไปยังตำแหน่งในหน่วยความจำซึ่งระบุที่อยู่ของหมายเลขที่ต้องการ แต่ไม่มีความสัมพันธ์กับดัชนีจริงในคอนเทนเนอร์ของค่าที่ส่งคืน ตัวอย่างเช่น ในการกำหนดองค์ประกอบสูงสุดใ
อย่างที่เราทราบดีว่าการกรองแบบเกาส์เซียนมีประโยชน์อย่างมากในด้านการประมวลผลภาพ ใช้เพื่อลดสัญญาณรบกวนของภาพ ในส่วนนี้เราจะมาดูวิธีการสร้าง 2D Gaussian Kernel Gaussian Distribution สำหรับสร้างเคอร์เนล 2D มีดังนี้ $$G(x,y)=\frac{1}{2\Pi\:\sigma^{2}}e^{\frac{x^{2}+y^{2}}{2\sigma^ {2}}}$$ ตัวอย่าง ให้เ
ในส่วนนี้ เราจะมาดูกันว่าเราจะใช้ฟังก์ชัน C++ STL เพื่อสร้างกรณีทดสอบได้อย่างไร บางครั้งการสร้างกรณีทดสอบสำหรับโปรแกรมอาร์เรย์อาจเป็นกระบวนการที่ซับซ้อนและไม่มีประสิทธิภาพ C ++ มีวิธีการสองวิธีในการสร้างกรณีทดสอบ วิธีการเหล่านี้มีดังนี้ − วิธี create() ฟังก์ชัน C++ std::algorithm::generate() กำหนดค
ในส่วนนี้ เราจะมาดูวิธีการสร้างคลาสพอยต์โดยใช้คลาสที่ซับซ้อนจาก STL ใน C++ และนำไปใช้กับปัญหาที่เกี่ยวข้องกับเรขาคณิต จำนวนเชิงซ้อนมีอยู่ในคลาสเชิงซ้อนจาก STL (#include ) การกำหนดคลาสของคะแนน ในการทำให้ซับซ้อนเป็นจุด เราจะเปลี่ยนชื่อของคอมเพล็กซ์ เป็นจุด จากนั้นเปลี่ยน x เป็น real() ของคลาสที่ซับซ้
ที่นี่เราจะเห็นคอนเทนเนอร์แผนที่และการใช้งานในภาษา C++ แผนที่ถูกกำหนดให้เป็นคอนเทนเนอร์ที่เชื่อมโยงที่เก็บองค์ประกอบในรูปแบบแฮชแมป แต่ละองค์ประกอบเชื่อมโยงกับคีย์และค่า ไม่มีค่าที่แมปสองค่าใดที่สามารถมีคีย์ที่เหมือนกันได้ นี่คือวิธีการพื้นฐานบางอย่างที่มีอยู่ในคอนเทนเนอร์แผนที่ใน C++ Begin():ส่งคืน
ในที่นี้เราจะพูดถึงการเริ่มต้นแบบสม่ำเสมอใน C++ รองรับตั้งแต่รุ่น C++11 การเริ่มต้นแบบสม่ำเสมอเป็นคุณลักษณะที่อนุญาตให้ใช้ไวยากรณ์ที่สอดคล้องกันเพื่อเริ่มต้นตัวแปรและอ็อบเจ็กต์ซึ่งมีตั้งแต่ประเภทดั้งเดิมไปจนถึงการรวม กล่าวอีกนัยหนึ่ง คือแนะนำการเริ่มต้นวงเล็บปีกกาที่ใช้เครื่องหมายปีกกา ({}) เพื่อใส่
ที่นี่ เราจะเห็นแนวคิดของตัวอักษรที่ผู้ใช้กำหนดใน C++ จาก C++ เวอร์ชัน 11 User Defined Literals (UDL) จะถูกเพิ่มใน C++ นอกจากนี้ C++ ยังจัดเตรียมตัวอักษรสำหรับประเภทในตัวที่หลากหลาย แต่สิ่งเหล่านี้มีข้อจำกัด ตัวอักษรในตัว - 31 (จำนวนเต็ม) 3.5 (ดับเบิ้ล) 4.2F (ลอย) p (ตัวละคร) 31ULL (
สมมติว่าเรามีหนึ่งเมทริกซ์ เราต้องแปลงเป็นรายการที่เชื่อมโยง 2d โดยใช้วิธีการวนซ้ำ รายการจะมีตัวชี้ขวาและล่าง ดังนั้นหากอินพุตเป็นแบบ 10 20 30 40 50 60 70 80 90 ผลลัพธ์จะเป็น เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - real_head :=NULL กำหนดขนาดอาร์เรย์ head_arr:m. สำหรับการเริ่มต
สมมติว่าเรามีหนึ่งเมทริกซ์ เราต้องแปลงเป็นรายการที่เชื่อมโยง 2d โดยใช้วิธีการเรียกซ้ำ รายการจะมีตัวชี้ขวาและล่าง ดังนั้นหากอินพุตเป็นแบบ 10 20 30 40 50 60 70 80 90 ผลลัพธ์จะเป็น เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ - กำหนดฟังก์ชัน make_2d_list() ซึ่งจะใช้ matrix mat, i, j, m, n,
สมมติว่าเรามีแผนผังการค้นหาไบนารีที่สมดุลและผลรวมเป้าหมาย เราต้องกำหนดวิธีการที่ตรวจสอบว่าเป็นคู่ที่มีผลรวมเท่ากับผลรวมเป้าหมายหรือไม่ ในกรณีนี้. เราต้องจำไว้ว่า Binary Search Tree นั้นไม่สามารถเปลี่ยนแปลงได้ ดังนั้นหากอินพุตเป็นแบบ แล้วผลลัพธ์จะเป็น (9 + 26 =35) เพื่อแก้ปัญหานี้ เราจะทำตามขั้น
สมมติว่าเรามีชุดขององค์ประกอบ เราต้องค้นหาว่าการเรียงสับเปลี่ยนขององค์ประกอบใดจะส่งผลให้เกิดกรณีที่เลวร้ายที่สุดของ Merge Sort? ตามที่เราทราบอย่างไม่มีอาการ การเรียงลำดับการผสานจะใช้เวลา O (n บันทึก n) เสมอ แต่บางกรณีจำเป็นต้องมีการเปรียบเทียบมากขึ้นและใช้เวลามากขึ้น ที่นี่เราต้องค้นหาการเปลี่ยนแปลง
เราได้รับอาร์เรย์ของตัวเลข N โดยมีองค์ประกอบอยู่ในช่วง 0 และ N-1 องค์ประกอบไม่เรียงลำดับ เป้าหมายคือการหาจำนวนพาร์ติชั่นสูงสุดของอาร์เรย์ที่สามารถจัดเรียงทีละรายการ จากนั้นจึงนำมาต่อกันเพื่อสร้างอาร์เรย์ที่เรียงความยาวทั้งหมด N แต่ละพาร์ติชั่นถูกเลือกเพื่อให้องค์ประกอบในนั้นไม่ถูกจัดเรียง สำหรับตัว
เราได้รับจำนวนเต็มห้าจำนวน N, A, B, X และ ใช่ . เป้าหมายคือการเพิ่มผลกำไรสูงสุดโดยตรวจสอบว่าระหว่างตัวเลขในช่วง [ 1 ถึง N ] ถ้า ตัวเลขหารด้วย A ลงตัว จากนั้นกำไรจะเพิ่มขึ้น X . ตัวเลขหารด้วย B ลงตัว กำไรจะเพิ่มขึ้น Y . กำไรสามารถเพิ่มได้เพียงครั้งเดียวสำหรับตัวเลขเฉพาะในช่วง มาทำความเข้าใ
เราได้รับอาร์เรย์ของตัวเลข เป้าหมายคือการหาจำนวนเฉพาะในอาร์เรย์นั้น จำนวนเฉพาะคือจำนวนที่หารด้วย 1 ลงตัวและจำนวนเฉพาะ มีเพียงสองปัจจัยเท่านั้น เราจะตรวจสอบว่าตัวเลขเป็นจำนวนเฉพาะตั้งแต่องค์ประกอบแรกจนถึงตัวสุดท้ายหรือไม่ และเพิ่มจำนวนเฉพาะที่พบจนถึงตอนนี้ ในการตรวจสอบว่าตัวเลข N เป็นจำนวนเฉพาะ ให้
=1 และ R<=N. เราจะทำสิ่งนี้โดยสำรวจองค์ประกอบที่อยู่ในช่วง L และ R แล้วหาจุดที่เล็กที่สุด อีกครั้ง สำรวจองค์ประกอบของช่วง L และ R และนับจำนวนที่เพิ่มขึ้นหากองค์ประกอบใดมีค่าเท่ากับค่าที่น้อยที่สุดที่คำนวณในขั้นตอนที่ 1 มาทำความเข้าใจกับตัวอย่างกัน ป้อนข้อมูล − arr[]={ 1,2,3,0,3,2,0,1 }, N=