来自向量一部分的 std::next_permutation()

发布于 2024-10-14 08:36:46 字数 501 浏览 2 评论 0原文

我正在尝试从向量的一部分生成排列。见下文。

vector<int> myArray;
myArray.resize(5);
myArray[0] = 1;
myArray[1] = 2;
myArray[2] = 3;
myArray[3] = 4;
myArray[4] = 5;
int i = 0;

do {
    for (i = 0; i < myArray.size(); i++) {
        printf("%i ", myArray[i]);
    }
    printf("\n");
} while (next_permutation(myArray.at(1), myArray.at(3)));

我只需要在位置 1 和 3 之间生成排列。不幸的是 vector::at() 返回引用,但 next_permutation() 需要 Bi DirectionIterator作为参数。

i'm trying to generate permutations from a part of a vector. See below.

vector<int> myArray;
myArray.resize(5);
myArray[0] = 1;
myArray[1] = 2;
myArray[2] = 3;
myArray[3] = 4;
myArray[4] = 5;
int i = 0;

do {
    for (i = 0; i < myArray.size(); i++) {
        printf("%i ", myArray[i]);
    }
    printf("\n");
} while (next_permutation(myArray.at(1), myArray.at(3)));

I need to generate permutations only between positions 1 and 3. Unfortunately vector::at() is returning reference, but next_permutation() needs BidirectionalIterator as a parameter.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不爱素颜 2024-10-21 08:36:46

while (next_permutation(myArray.begin()+1, myArray.begin()+3)); 应该可以工作

while (next_permutation(myArray.begin()+1, myArray.begin()+3)); should work

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文