【发布时间】:2014-03-11 09:20:26
【问题描述】:
我有一个 变量 编号 std::vectors<int>,假设在这个例子中我有 3 个向量:
std::vector<int> vect1 {1,2,3,4,5};
std::vector<int> vect2 {1,2,3,4,5};
std::vector<int> vect3 {1,2,3,4,5};
向量的值在这里并不重要。此外,这些向量的长度是可变的。
从这些向量中,我想创建向量值的每个排列,所以:
{1, 1, 1}
{1, 1, 2}
{1, 1, 3}
...
...
...
{3, 5, 5}
{4, 5, 5}
{5, 5, 5}
然后我会将每个组合插入到键值对映射中,以供我的应用程序进一步使用。
什么是完成此任务的有效方法?我通常只使用for 循环,并遍历所有参数以创建所有组合,但向量的数量是可变的。
谢谢。
编辑:我将包括更多细节。
所以,首先,我并不是在处理ints,而是一个自定义对象。 ints 只是为了简单起见。向量本身存在于像 std::map<std::string, std::vector<int> > 这样的地图中。
我的最终目标是拥有一个std::vector< std::map< std::string, int > >,它本质上是名称-值对的所有可能组合的集合。
【问题讨论】:
-
“向量的数量是可变的”——假设你有一个向量向量是否公平?
-
嗯,这是一张矢量地图,其中每个矢量都有一个特殊的名称,我正在跟踪。
-
您能否包含地图的代码,以及向量的具体顺序(例如按键上的字母顺序?)
-
@Dukeling 那个帖子可能会解决我的问题,我会尝试用 C++ 实现并发布它。马特,向量没有我关心的顺序。我将在编辑中发布更多详细信息。
-
@Dukeling:虽然这个问题可能几乎是重复的,但完全可以做到这一点的代码不会像那里给出的任何答案那样任何东西。跨度>