- 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/
如何在 PHP 中生成 CRC-8 校验和? 最佳答案 function crcnifull ($dato, $byte) { static $PolyFull=0x8c; for ($i=0
我正在编写代码来使用 32 位无符号整数计算 CRC16。当尝试打印执行 CRC 操作的 XOR 函数的返回值时,它总是打印 0。我尝试了各种调试方法,例如打印语句,但是,我似乎无法弄清楚! 这是我的
ThinkPHP3.2.3验证码显示、刷新、校验 ,具体如下: 显示验证码 首先在Home/Controller下创建一个公共控制器PublicController
我想将自定义验证绑定(bind)到 TimePicker 自定义控件,但下面的代码显示“无法将内容添加到 TimePicker 的对象类型。”。
目录 Spring 校验(validator,JSR-303)实现 什么是JSR-303规范 与Spring MVC结合 实体类添加
导包和配置 导入 JSR 303 的包、hibernate valid 的包 ?
我是一名优秀的程序员,十分优秀!