У меня есть класс Test, который содержит два вектора класса Letter, определенного пользователем типа, для которого был реализован оператор меньше чем (<).Как лучше всего сгенерировать все возможные перестановки Test? </p>
class Test
{
vector<Letter> letter_box_a;
vector<Letter> letter_box_b;
}
Так что, если letter_box_a содержит буквы A и B, а letter_box_b содержит C и D, действительными перестановками Test будут (AB) (CD), (BA) (CD), (AB) (DC) и (BA) (DC).
Несмотря на то, что я могу переборщить, я пытался написать лучшую (более элегантную / эффективную) функцию, котораявнутренне вызвал бы std :: next_permutation для нижележащих контейнеров, что позволило бы мне сделать
Test test;
while (test.set_next_permutation())
{
// Do the stuff
}
, но это оказалось немного сложнее, чем я ожидал.Мне не обязательно нужно решение STL, но я бы хотел элегантное решение.