This section presents the STL algorithms that are provided for numeric processing. However, you
can process other than numeric values. For example, you can use accumulate() to process the sum
of several strings. To use the numeric algorithms, you have to include the header file :
#include
11.11.1 Processing Results
Computing the Result of One Sequence
T
accumulate (InputIterator beg, InputIterator end,
T initValue)
T
accumulate (InputIterator beg, InputIterator end,
T initValue, BinaryFunc op)
• The first form computes and returns the sum of initValue and all elements in the range [beg,end).
In particular, it calls the following for each element:
initValue = initValue + elem
• The second form computes and returns the result of calling op for initValue and all elements in
the range [beg,end). In particular, it calls the following for each element:
initValue = op(initValue,elem)
• Thus, for the values
a1 a2 a3 a4 ...
they compute and return either
initValue + a1 + a2 + a3 + ...
or
initValue op a1 op a2 op a3 op ...
respectively.
• If the range is empty (beg==end), both forms return initValue.
• op must not modify the passed arguments.
• Complexity: linear (numElems calls of operator + or op(), respectively).
The following program demonstrates how to use accumulate() to process the sum and the product
of all elements of a range:
ส่วนนี้แสดงอัลกอริทึม STL ที่กำหนดไว้สำหรับการประมวลผลตัวเลข อย่างไรก็ตาม คุณ
สามารถประมวลผลอื่นที่ไม่ใช่ค่าตัวเลขได้ ตัวอย่าง คุณสามารถใช้ accumulate() เพื่อประมวลผล
ของสายต่าง ๆ ได้ การใช้อัลกอริทึมตัว คุณต้องรวมแฟ้มหัว :
#include
11.11.1 ผลลัพธ์ที่ประมวลผล
คำนวณผลลัพธ์ของหนึ่งลำดับ
T
สะสม (InputIterator วอน สิ้นสุด InputIterator,
T initValue)
T
สะสม (InputIterator วอน สิ้นสุด InputIterator,
T initValue, BinaryFunc op)
•แบบแรกคำนวณ และส่งกลับค่าผลรวมของ initValue และองค์ประกอบทั้งหมดในช่วง [beg,end)
โดยเฉพาะ เรียกต่อไปนี้สำหรับแต่ละองค์ประกอบ:
initValue = initValue elem
•แบบฟอร์มสองตัว และส่งกลับค่าผลลัพธ์ของการเรียก op สำหรับ initValue และองค์ประกอบทั้งหมดใน
ช่วง [วอน จบ) โดยเฉพาะ เรียกต่อไปนี้สำหรับแต่ละองค์ประกอบ:
initValue = op (initValue, elem)
•ดังนี้ สำหรับค่า
a1 a2 a3 a4...
จะคำนวณ และส่งกลับหรือ
initValue a1 a2 a3...
หรือ
initValue op a1 op a2 op a3 op...
ตามลำดับ.
•ถ้าช่วงว่างเปล่า (วอน==สุดท้าย), รูปแบบกลับ initValue.
• op ต้องปรับเปลี่ยนการส่งผ่านอาร์กิวเมนต์ด้วย
•ความซับซ้อน: เชิงเส้น (numElems เรียกตัวหรือ op() ตามลำดับ)
โปรแกรมต่อไปนี้สาธิตวิธีการใช้ accumulate() ในการประมวลผลและผลิตภัณฑ์
ขององค์ประกอบทั้งหมดของช่วง:
การแปล กรุณารอสักครู่..