ฉันมีc++ vectorกับstd::pair<unsigned long, unsigned long>วัตถุ std::next_permutation()ฉันพยายามที่จะสร้างวัตถุพีชคณิตของเวกเตอร์โดยใช้ อย่างไรก็ตามฉันต้องการให้การเรียงสับเปลี่ยนมีขนาดตามที่คุณต้องการคล้ายกับpermutationsฟังก์ชันในไพ ธ อนซึ่งมีการระบุขนาดของการเปลี่ยนรูปแบบการส่งคืนที่คาดไว้
โดยทั่วไปc++เทียบเท่ากับ
import itertools
list = [1,2,3,4,5,6,7]
for permutation in itertools.permutations(list, 3):
print(permutation)
(1, 2, 3)
(1, 2, 4)
(1, 2, 5)
(1, 2, 6)
(1, 2, 7)
(1, 3, 2)
(1, 3, 4)
..
(7, 5, 4)
(7, 5, 6)
(7, 6, 1)
(7, 6, 2)
(7, 6, 3)
(7, 6, 4)
(7, 6, 5)
(1, 1)อย่างไร python permutations จัดทำรายการที่ซ้ำกัน[(1, 1), (1, 1)]ในขณะที่std::next_permutationหลีกเลี่ยงรายการที่ซ้ำกัน (เท่านั้น{1, 1})