C++ 在c+中生成对应于周期晶格平移的置换+;

C++ 在c+中生成对应于周期晶格平移的置换+;,c++,permutation,C++,Permutation,假设我有一个数组、字符串或任何合适的数据结构中的字符序列(ABCDEF…),这些字符分布在3D晶格的站点上,这样位置1对应于坐标(1,1,1),依此类推。当我在此晶格上执行任何操作时,即,在x方向上的周期性平移,这意味着所有元素都在x方向上循环移动,这应该相应地改变数据结构中的字符序列。我的问题是:哪些数据结构/函数/库可以有效地在C++中进行这些排列?速度很重要,因为这需要多次完成。在1D中,您可以将其视为一个循环双链接列表。这样做的好处是,你可以使用一个容器,让你的生活更轻松 将其扩展到3D

假设我有一个数组、字符串或任何合适的数据结构中的字符序列(ABCDEF…),这些字符分布在3D晶格的站点上,这样位置1对应于坐标(1,1,1),依此类推。当我在此晶格上执行任何操作时,即,在x方向上的周期性平移,这意味着所有元素都在x方向上循环移动,这应该相应地改变数据结构中的字符序列。我的问题是:哪些数据结构/函数/库可以有效地在C++中进行这些排列?速度很重要,因为这需要多次完成。

在1D中,您可以将其视为一个循环双链接列表。这样做的好处是,你可以使用一个容器,让你的生活更轻松


将其扩展到3D的练习留给读者。

在这种情况下“相应地”是什么?您能否给出一个操作示例,以澄清您的意思是什么样的移位?@Andreas Brinck例如,如果位置(3,1,1)对应于我序列中的第7个元素,那么对于x方向上的移位2个位置,序列中的第一个元素应移到第七个元素,所有其他元素也应移到第七个元素。@thiton:问题和我对Andreas Brinck的答复中给出了一个例子。请不要提供到cplusplus.com的链接。这不是一个好的资源。