- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想通过容器中元素原始索引的奇偶校验对std::vector
进行分区。换句话说,我想将其分为两半:第一个包含所有偶数索引元素,第二个包含所有奇数索引元素。
元素之间的排序关系无关紧要,只有原始 vector 中的位置才重要。
我想使用标准算法和lambdas(最好是在原位)来实现这种效果。我可以使用常规的for
循环来做到这一点。
例
让我们假设我们有一个元素a b c d e f
的 vector 。所需的分区是a c e b d f
。第一个(a
),第三个(c
)和第五个(e
)移到前面,而第二个(b
),第四个(d
)和第六个(f
)移到后面。
我的尝试
我有一个与此对象相似的对象:
struct T {
int x;
};
std::vector<T> ts {{1}, {2}, {4}, {3}, {6}, {5}};
auto predicate = [](const T& t) {
return t.x % 2 == 1;
};
std::stable_partition(ts.begin(), ts.end(), predicate);
1 3 5 2 4 6
。我希望分区返回
1 4 6 2 3 5
。
predicate
定义为
auto predicate = [](const std::vector<T>::const_iterator& t)
return t->x % 2 == 1;
};
for
循环来执行此分区,尽管这种方法不是很稳定。
for (auto i = ts.begin() + 1, j = ts.begin() + 2; j != ts.end(); i += 1, j += 2) {
std::swap(*i, *j);
}
std
算法实现它,还是我需要求助于标准循环?
最佳答案
在c++ 11中,使用计数器作为索引来验证它是偶数还是奇数。
#include <iostream>
#include <vector>
struct T {
int x;
};
int main()
{
std::vector<T> ts {{1}, {2}, {4}, {3}, {6}, {5}};
int counter =0;
auto predicate = [&counter]() {
++counter;
return (counter % 2 == 1);
};
std::stable_partition(ts.begin(), ts.end(), predicate);
for(auto i: ts)
std::cout << i.x << ", ";
}
关于c++ - 通过元素原始位置的奇偶校验来稳定分区std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59948444/
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
这个测试行得通吗?: if (testInt/2).ofType(Integer){ //to-do if even } 我假设它会 iff 编译器在 ofType() 之前解析 testIn
我正在尝试更好地排列图像,而不仅仅是 1 列中的图像。示例见附件,每篇文章的图片可以在左右。 这是我的代码。HTML: Content 1
我有一个看起来像这样的定义: Title Entry Entry Entry Title Entry Title Entry Entry Title E
我是一名优秀的程序员,十分优秀!