See page 620 for another example. It demonstrates how the various algorithms that are provided to
combine sorted sequences differ.
Processing the Union of Two Sorted Sets
OutputIterator
set_union (InputIterator source1Beg, InputIterator source1End,
InputIterator source2Beg, InputIterator source2End,
OutputIterator destBeg)
OutputIterator
set_union (InputIterator source1Beg, InputIterator source1End,
InputIterator source2Beg, InputIterator source2End,
OutputIterator destBeg, BinaryPredicate op)
• Both forms merge the elements of the sorted source ranges [source1Beg,source1End) and
[source2Beg,source2End) so that the destination range starting with destBeg contains all elements
that are in the first source range, in the second source range, or in both. For example,
calling set_union() for
1 2 2 4 6 7 7 9
and
2 2 2 3 6 6 8 9
results in
1 2 2 2 3 4 6 6 7 7 8 9
• All elements in the destination range are in sorted order.
• Elements that are in both ranges are in the union range only once. However, duplicates are possible
if elements occur more than once in one of the source ranges. The number of occurrences
of equal elements in the destination range is the maximum of the number of their occurrences in
both source ranges.
• Both forms return the position after the last copied element in the destination range (the first
element that is not overwritten).
• op is an optional binary predicate to be used as the sorting criterion:
op(elem1,elem2)
• The source ranges are not modified.
• The caller has to ensure that the ranges are sorted according to the sorting criterion on entry.
• The caller must ensure that the destination range is big enough or that insert iterators are used.
• The destination range should not overlap the source ranges.
• To obtain all elements of both source ranges without removing elements that are in both, use
merge() (see page 614).
• Complexity: linear (at most, 2*(numElems1+numElems2) - 1 comparisons).
See page 620 for an example of the use of set_union(). This example also demonstrates how it
differs from other algorithms that combine elements of two sorted sequences.
ดูหน้า 620 ตัวอย่างอื่น มันแสดงให้เห็นว่าอัลกอริทึมต่าง ๆ ที่มีการ
รวมเรียงลำดับแตกต่าง
ประมวลผลร่วมของสองเรียงลำดับชุด
OutputIterator
set_union (InputIterator source1Beg, InputIterator source1End,
InputIterator source2Beg, InputIterator source2End,
OutputIterator destBeg)
OutputIterator
set_union (InputIterator source1Beg InputIterator source1End,
InputIterator source2Beg, InputIterator source2End,
OutputIterator destBeg, BinaryPredicate op)
•รูปแบบผสานองค์ประกอบของข้อมูลที่เรียงลำดับ [source1Beg,source1End) and
[source2Beg,source2End) เพื่อให้ช่วงปลายเริ่มต้น ด้วย destBeg ประกอบด้วยองค์ประกอบทั้งหมด
ที่อยู่ ในช่วงเซลล์ต้นทางแรก ในช่วงเซลล์ต้นทางที่สอง หรือทั้งนั้น ตัวอย่าง,
โทร set_union() สำหรับ
1 2 2 4 6 7 7 9
และ
2 2 2 3 6 6 8 9
ผล
1 2 2 2 3 4 6 6 7 7 8 9
•มีองค์ประกอบทั้งหมดในช่วงปลายเรียงลำดับใบสั่ง
•องค์ประกอบที่อยู่ในช่วงที่ทั้งสองอยู่ในช่วงที่สหภาพเพียงครั้งเดียว อย่างไรก็ตาม สำเนาจะได้
ถ้าองค์ประกอบเกิดขึ้นมากกว่าหนึ่งครั้งในช่วงต้นอย่างใดอย่างหนึ่ง จำนวน
องค์เท่าในปลายช่วงเป็นจำนวนของลักษณะที่ปรากฏใน
ทั้งแหล่งช่วง
•รูปแบบกลับตำแหน่งหลังจากล่าสุดคัดลอกองค์ประกอบช่วงปลาย (แรก
องค์ประกอบที่ไม่ถูกเขียนทับ) .
• op เป็นเพรดิเคตไบนารีตัวเลือกที่จะใช้เป็นเงื่อนไขการเรียงลำดับ:
op (elem1, elem2)
•แหล่งข้อมูลไม่ได้ถูกแก้ไข
•มีผู้เรียกเพื่อให้แน่ใจว่า ช่วงจะเรียงลำดับตามเกณฑ์เรียงบนรายการ
•ผู้เรียกต้องแน่ใจว่า ช่วงปลายมีขนาดใหญ่เพียงพอ หรือที่แทรกใช้ iterators
•ช่วงปลายไม่ควรทับซ้อนช่วงแหล่ง
•รับองค์ประกอบทั้งหมดของทั้งสองแหล่งข้อมูลโดยไม่ต้องเอาองค์ประกอบที่สอง use
merge() (ดูหน้า 614)
•ความซับซ้อน: เชิงเส้น (มากที่สุด 2 *(numElems1 numElems2) - 1 เปรียบเทียบ) .
ดูหน้า 620 สำหรับตัวอย่างการใช้ set_union() ตัวอย่างนี้ยังแสดงให้เห็นว่ามัน
แตกต่างจากอัลกอริทึมอื่น ๆ ที่รวมองค์ประกอบเรียงลำดับสอง
การแปล กรุณารอสักครู่..

โปรดดูที่หน้า 620 ตัวอย่างอื่น มันแสดงให้เห็นว่าขั้นตอนวิธีการต่างๆที่มีไว้เพื่อ
รวมลำดับที่เรียงลำดับที่แตกต่างกัน
ดำเนินการยูเนี่ยนของสองเรียงตามกำหนด
OutputIterator
set_union (InputIterator source1Beg, InputIterator source1End,
InputIterator source2Beg, InputIterator source2End,
OutputIterator destBeg)
OutputIterator
set_union (InputIterator source1Beg, InputIterator source1End,
InputIterator source2Beg, InputIterator source2End,
OutputIterator destBeg, BinaryPredicate op)
•รูปแบบทั้งสองรวมองค์ประกอบของช่วงที่มาเรียงลำดับ [source1Beg, source1End) และ
[source2Beg, source2End) เพื่อให้ช่วงปลายทางที่เริ่มต้นด้วย destBeg มีองค์ประกอบทั้งหมด
ที่อยู่ในแหล่งแรก ช่วงที่มาอยู่ในช่วงที่สองหรือทั้ง ตัวอย่างเช่น
การเรียก set_union () เป็นเวลา
1 2 2 4 6 7 7 9
และ
2 2 2 3 6 6 8 9
ผลใน
1 2 2 2 3 4 6 6 7 7 8 9
•องค์ประกอบทั้งหมดที่อยู่ในช่วงปลายทางที่อยู่ในลำดับที่เรียงลำดับ .
•องค์ประกอบที่อยู่ในช่วงที่ทั้งสองอยู่ในช่วงที่ยูเนี่ยนเพียงครั้งเดียว แต่ที่ซ้ำกันจะเป็นไปได้
ถ้าองค์ประกอบเกิดขึ้นมากกว่าหนึ่งครั้งในหนึ่งในช่วงที่มา จำนวนการเกิด
ขององค์ประกอบเท่าเทียมกันในช่วงปลายทางสูงสุดของจำนวนการเกิดของพวกเขาใน
ช่วงที่ทั้งสองแหล่งที่มา
•รูปแบบทั้งสองกลับตำแหน่งหลังจากที่คัดลอกองค์ประกอบสุดท้ายในช่วงปลายทาง (แรก
องค์ประกอบที่ไม่ได้ถูกเขียนทับ)
•สหกรณ์เป็นคำกริยาไบนารีตัวเลือกที่จะใช้เป็นเกณฑ์การเรียงลำดับ:
op (elem1, elem2)
•ช่วงที่แหล่งที่มาไม่ได้รับการแก้ไข
•โทรมีเพื่อให้แน่ใจว่าช่วงที่จะถูกจัดเรียงตามเกณฑ์การเรียงลำดับที่รายการ
• โทรต้องให้แน่ใจว่าช่วงปลายทางมีขนาดใหญ่พอหรือว่าใส่ iterators ใช้
•ช่วงปลายทางไม่ควรซ้อนทับกันของแหล่งที่มาช่วง
•เพื่อให้ได้องค์ประกอบทั้งหมดของแหล่งที่มาทั้งสองช่วงโดยไม่ต้องถอดองค์ประกอบที่มีอยู่ในทั้งสองใช้
ผสาน () ( ดูที่หน้า 614)
•ซับซ้อน: เชิงเส้น (ที่ส่วนใหญ่ 2 * (numElems1 + numElems2) - 1 การเปรียบเทียบ)
ดูหน้า 620 ตัวอย่างของการใช้ set_union () ตัวอย่างนี้ยังแสดงให้เห็นถึงวิธีการที่จะ
แตกต่างจากขั้นตอนวิธีการอื่น ๆ ที่รวมองค์ประกอบของสองลำดับที่เรียงลำดับ
การแปล กรุณารอสักครู่..

ดูหน้า 620 ตัวอย่างอื่น มันแสดงให้เห็นถึงวิธีการต่างๆขั้นตอนวิธีที่มีให้
รวมเรียงลำดับการประมวลผลแตกต่างกัน สหภาพของสองเรียงชุด
outputiterator set_union ( inputiterator source1beg inputiterator source1end , , inputiterator source2beg
,
source2end inputiterator , outputiterator destbeg )
( inputiterator source1beg outputiterator set_union ,inputiterator source1end inputiterator source2beg
, ,
source2end inputiterator , outputiterator destbeg binarypredicate , OP )
- ทั้งรูปแบบผสานองค์ประกอบของเรียงที่มาช่วง [ source1beg source1end ) , และ source2beg
[ source2end ) , เพื่อให้ปลายทางช่วงเริ่มต้นด้วย destbeg ประกอบด้วยองค์ประกอบทั้งหมด
ที่อยู่ในช่วงที่มาครั้งแรก ในช่วง แหล่งที่สอง หรือทั้งสองอย่าง ตัวอย่างเช่น
เรียก set_union() สำหรับ
1 2 2 4 6 7 และ 9
2 2 2 3 4 6 8 9
ผลใน 1 2 2 2 3 4 5 6 7 8 9
- องค์ประกอบทั้งหมดในช่วงปลายทางอยู่ในการเรียงลำดับ
- องค์ประกอบที่ทั้งในช่วงในช่วง สหภาพเพียงครั้งเดียว อย่างไรก็ตาม ข้อมูลที่ซ้ำกันเป็นไปได้
ถ้าองค์ประกอบเกิดขึ้นมากกว่าหนึ่งครั้งในช่วงหนึ่งของแหล่งที่มา หมายเลขเหตุการณ์
องค์ประกอบเท่ากับในช่วงปลายทางคือสูงสุดของจำนวนการเกิดของพวกเขาในช่วงทั้งแหล่ง
.
- แบบฟอร์มทั้งสองคืนตำแหน่งหลังจากคัดลอกองค์ประกอบสุดท้ายในช่วงปลายทาง ( องค์ประกอบแรก
ที่ไม่เขียนทับ )
- OP คือตัวเลือกไบนารีมูลฐานเพื่อใช้เป็นเกณฑ์การเรียงลำดับ :
( elem1 OP , แหล่ง elem2 )
-
ช่วงที่ไม่ได้แก้ไข- โทรได้เพื่อให้แน่ใจว่าช่วงที่เรียงไว้ตามเกณฑ์ในการเรียงลำดับรายการ .
- โทรต้องมั่นใจว่า ช่วงปลายมีขนาดใหญ่พอ หรือใส่ iterators ใช้ .
- ช่วงปลายทางไม่ควรทับซ้อนมาช่วง
- เพื่อให้ได้องค์ประกอบทั้งหมดของช่วงทั้งสองแหล่งที่มาโดยไม่เอาองค์ประกอบที่ทั้งสองใช้
merge() ( ดูหน้า 614 )
- ความซับซ้อน :เส้น ( มากสุด 2 * ( numelems1 numelems2 ) - 1 เปรียบเทียบ ) .
ดูหน้า 620 สำหรับตัวอย่างของการใช้ set_union() . ตัวอย่างนี้ยังแสดงให้เห็นถึงวิธีการ
แตกต่างจากอัลกอริทึมอื่น ๆที่รวมองค์ประกอบสองเรียงลําดับ
การแปล กรุณารอสักครู่..
